home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / verbtext / verbtext.sty < prev    next >
Text File  |  1993-11-07  |  74KB  |  2,437 lines

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. %                                                                      %
  3. %  VERBTEXT.STY                                                        %
  4. %                                                                      %
  5. %  This document style option for LaTeX documents allows you to set    %
  6. %  some text verbatim or to input a file verbatim, with reasonable     %
  7. %  printing of 8-bit-characters, using only the standard (old) LaTeX   %
  8. %  fonts (cmtt... etc.), without needs for the new DC fonts.           %
  9. %  Character set ISO 8859 Latin 1 and PC codepages 437 and 850 are     %
  10. %  currently supported, but other sets may easily be added.            %
  11. %  Verbatim text may be enclosed in a box or be line numbered.         %
  12. %  A meta-verbatim mode allows escapes from verbatim mode without      %
  13. %  leaving the verbatim environment.                                   %
  14. %                                                                      %
  15. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  16. %                                                                      %
  17. %  Copyright (c) 1993 by Rainer Perske                                 %
  18. %                                                                      %
  19. %  This program is free software; you can redistribute it and/or       %
  20. %  modify it under the terms of the GNU General Public License as      %
  21. %  published by the Free Software Foundation; either version 2 of the  %
  22. %  License, or (at your option) any later version, with one exception: %
  23. %  In opposition to the terms just mentioned, you MUST NOT TAKE A FEE  %
  24. %  for copying or distributing this program in its unmodified version. %
  25. %                                                                      %
  26. %  This program is distributed in the hope that it will be useful,     %
  27. %  but WITHOUT ANY WARRANTY; without even the implied warranty of      %
  28. %  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       %
  29. %  GNU General Public License for more details.                        %
  30. %                                                                      %
  31. %  You should have received a copy of the GNU General Public License   %
  32. %  along with this program; if not, write to the Free Software         %
  33. %  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.           %
  34. %  A copy of this licence is attached to the end of this program.      %
  35. %                                                                      %
  36. %  Please direct any comments about this file via electronic mail to:  %
  37. %  perske@uni-muenster.de (Internet address), or via paper mail to:    %
  38. %  Rainer Perske, Zur Gr"afte 10, D-48161 M"unster, Germany            %
  39. %  And don't forget to mention the date of this version, see below.    %
  40. %                                                                      %
  41. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  42.  
  43. \message{Document style option `verbtext.sty' for 8-bit-verbatim text %%
  44. and file input -- Release of 17.Sep.1993}
  45.  
  46. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  47. %                                                                      %
  48. %  Dieser Style dient zum Einf"ugen von Dateien, Zeilen oder Zeichen,  %
  49. %  die verbatim oder meta-verbatim gedruckt werden.                    %
  50. %                                                                      %
  51. %  Die Zeichen hex.00 bis 07 und 0E bis FF werden optional gem"a"s     %
  52. %  ISO 8859 Latin 1, CECP 850 oder CECP 437 dargestellt.               %
  53. %                                                                      %
  54. %  F"ur Steuerzeichen in diesem Bereich werden geeignete grafische     %
  55. %  Darstellungen ausgew"ahlt.                                          %
  56. %                                                                      %
  57. %  Die Steuerzeichen hex.08 bis 0D (BS, HT, LF, VT, FF und CR) werden  %
  58. %  sinnvoll ausgef"uhrt, wobei LF, VT, FF und CR alle als Zeilenenden  %
  59. %  behandelt werden, bei VT zus"atzlich eine und bei FF zwei leere     %
  60. %  Zeilen eingef"ugt werden.                                           %
  61. %                                                                      %
  62. %  Im Verbatim-Modus werden alle Zeichen (bis auf das Begrenzungs-     %
  63. %  zeichen bei \verbchars) im eingestellten Zeichensatz dargestellt.   %
  64. %                                                                      %
  65. %  Im Meta-Verbatim-Modus behalten die Zeichen \ { } ihre gewohnte     %
  66. %  Bedeutung, au"serdem dienen die Zeichen < und > als Steuerzeichen.  %
  67. %  Die Zeichen k"onnen aber mit \\ \{ \} \< und \> eingegeben werden.  %
  68. %                                                                      %
  69. %  Texte, die im Meta-Verbatim-Modus in <...> eingeschlossen werden,   %
  70. %  werden in \it gesetzt und normal interpretiert.                     %
  71. %                                                                      %
  72. %  Bei \verbchars verlieren auch die Steuerzeichen hex.08 bis 0D ihre  %
  73. %  Funktion, sie werden ebenfalls dargestellt.                         %
  74. %                                                                      %
  75. %  Diese Datei ist mit \input in die Pr"aambel einzuf"ugen oder als    %
  76. %  Style-Datei im \documentstyle-/\documentclass-Befehl anzugeben.     %
  77. %                                                                      %
  78. %  Die Befehle und Umgebungen d"urfen auch in {\small ...} oder andere %
  79. %  Gr÷▀enumschaltungen eingeschlossen werden.                          %
  80. %                                                                      %
  81. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  82. %                                                                      %
  83. %  Datei oder Zeilen verbatim einf"ugen:                               %
  84. %  - \verbinput{filename}      - Datei unmodifiziert                   %
  85. %  - \verbinputnum{filename}   - Datei mit Zeilennummern links         %
  86. %  - \verbinputbox{filename}   - Datei in Kasten eingeschlossen        %
  87. %  - \begin{verblines} ...     - Zeilen unmodifiziert                  %
  88. %  - \begin{verblinesnum} ...  - Zeilen mit Zeilennummern links        %
  89. %  - \begin{verblinesbox} ...  - Zeilen in Kasten eingeschlossen       %
  90. %                                                                      %
  91. %  Datei oder Zeilen meta-verbatim einf"ugen:                          %
  92. %  - \metainput{filename}      - Datei unmodifiziert                   %
  93. %  - \metainputnum{filename}   - Datei mit Zeilennummern links         %
  94. %  - \metainputbox{filename}   - Datei in Kasten eingeschlossen        %
  95. %  - \begin{metalines} ...     - Zeilen unmodifiziert                  %
  96. %  - \begin{metalinesnum} ...  - Zeilen mit Zeilennummern links        %
  97. %  - \begin{metalinesbox} ...  - Zeilen in Kasten eingeschlossen       %
  98. %                                                                      %
  99. %  Zeichenfolge verbatim einf"ugen:                                    %
  100. %  - \verbchars|zeichenfolge|  - Zeichenfolge zwischen den |-Zeichen   %
  101. %    (Anstelle von | kann ein beliebiges Zeichen verwendet werden.)    %
  102. %    (Auch die Steuercodes HT, BS, LF, VT, FF, CR werden dargestellt.) %
  103. %                                                                      %
  104. %  Alle Befehle und Umgebungen gibt es auch in der *-Form mit sichtbar %
  105. %  dargestelltem Leerzeichen: \verbinput*{fname}, \begin{verblines*},  %
  106. %  \verbchars*|zeichenfolge| etc.                                      %
  107. %                                                                      %
  108. %  Alle Befehle und Umgebungen gibt es auch mit gro"sem Anfangsbuch-   %
  109. %  staben. Diese Variante erzeugt Zwischenraum vor und nach den ein-   %
  110. %  gef"ugten Zeilen bzw. Zeichen, wie es auch bei der originalen       %
  111. %  verbatim-Umgebung der Fall ist. (Bei den Kleinbuchstabenvarianten   %
  112. %  sto"sen die eingef"ugten Zeilen bzw. Zeichen unmittelbar an die     %
  113. %  benachbarten Zeilen bzw. Zeichen.)                                  %
  114. %                                                                      %
  115. %  Die Umgebungen Verblines und Verblines* k"onnen folglich als Ersatz %
  116. %  f"ur verbatim und verbatim* verwendet werden und die Befehle        %
  117. %  \verbchars und \verbchars* als Ersatz f"ur \verb und \verb*. Um     %
  118. %  verbatim, verbatim*, \verb und \verb* entsprechend umzudefinieren,  %
  119. %  ist der Befehl \verbatimreplace auszuf"uhren.                       %
  120. %                                                                      %
  121. %  Umgebungen verbatim, verbatim*, Befehle \verb, \verb* umdefinieren: %
  122. %  - \verbatimreplace  - LaTeX-Befehle umdefinieren                    %
  123. %    Die Einstellung gilt lokal zur Gruppe.                            %
  124. %                                                                      %
  125. %  Auswahl des zu verwendenden Zeichensatzes:                          %
  126. %  - \verbcharset{nnn} - Zeichensatz nnn einstellen                    %
  127. %    (nnn ist eine der Zahlen 88591, 850, 437, Anfangswert ist 88591.) %
  128. %    Die Einstellung gilt lokal zur Gruppe.                            %
  129. %                                                                      %
  130. %  Im Meta-Verbatim-Modus stehen die deaktivierten Zeichen unter       %
  131. %  diesen Namen weiterhin zur Verf"ugung:                              %
  132. %  " \um  # \hash  $ \dollar $$ \ddollar  & \tab  ^ \sp  _ \sb  ~ \tie %
  133. %                                                                      %
  134. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  135.  
  136. \ifx\verbtextalready\relax\endinput\else\let\verbtextalready\relax\fi
  137.  
  138. \begingroup
  139. \makeatletter% LaTeX-Buchstabe
  140. \catcode`\:=11% Privater Buchstabe
  141. \catcode`\^^0c=\active\let^^0c=\relax% Outer-Setzung entsch"arfen
  142. \gdef\H:{2.4ex}% Zeilenabstand
  143.  
  144. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  145. %                                                                      %
  146. %  Erster Teil: Definition der Sonderzeichen                           %
  147. %                                                                      %
  148. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  149.  
  150. % Alle Zeichen m"ussen so definiert werden, da"s sie
  151. % - nicht mit '{' anfangen (gibt am Zeilenanfang Probleme mit \everypar)
  152. % - den vertikalen Modus verlassen, bevor sie etwas setzen (sie d"urfen
  153. %   also nicht mit \kern oder \hbox beginnen)
  154.  
  155. % Dimensionen f"ur selbstgebastelte Zeichen
  156.  
  157. \newdimen{\w:}
  158. \newdimen{\h:}
  159. \newdimen{\d:}
  160. \newdimen{\x:}
  161. \newdimen{\y:}
  162. \newdimen{\z:}
  163.  
  164. % Hilfsmakros
  165.  
  166. \newif\ifv:vis% Leerzeichen sichtbar?
  167. \global\let\ifv:vis=\ifv:vis
  168. \global\let\v:vistrue=\v:vistrue
  169. \global\let\v:visfalse=\v:visfalse
  170. \gdef\cbox:#1{\leavevmode{\tt\setbox0=\hbox to\w:{#1}\ht0=\h:\dp0=\d:\box0 }}
  171. \gdef\sym:#1{\cbox:{\hss#1\hss}}
  172. \gdef\bs:{{\hskip-\w:}}
  173. \gdef\up:#1#2{\leavevmode\raise#1\hbox{#2}}
  174. \gdef\ctl:#1{\sym:{\char20 \bs:\up:{.3ex}{\char20 }\bs:\up:{-.4ex}{#1}}}
  175. \gdef\ctlx:#1{\sym:{\char94 \bs:\up:{.3ex}{\char94 }\bs:\up:{-.4ex}{#1}}}
  176. \gdef\G:#1{\leavevmode\lower\d:\vbox to\z:{\vss\hbox to\w:{#1\hss}}}
  177. \gdef\B:#1#2#3#4{\hbox to0em{\vrule height0ex depth0ex width#1\x:\vrule height#2\y: depth-#3\y: width#4\x: \hss}}
  178.  
  179. % Umdefinierte ASCII-Zeichen
  180.  
  181. \gdef\:sp{\ifv:vis\char32 \else\ \fi}% Feste Blanks
  182. \gdef\:gr{\leavevmode\kern0pt\char96 }% Keine Ligaturen ?` und !`
  183. \gdef\:us{\leavevmode\vrule height-.2\d: depth.5\d: width\w:\relax}% Aussehen
  184.  
  185. % Definition der Akzente und Umlaute als Makros
  186.  
  187. \gdef\:acute{\char19 }
  188. \gdef\:angstrom{\char23 }
  189. \gdef\:macron{\char22 }
  190. \gdef\:cedilla{\char24 }
  191. \gdef\:circumflex{\char94 }
  192. \gdef\:grave{\char18 }
  193. \gdef\:tilde{\char126 }
  194. \gdef\:umlaut{\char127 }
  195.  
  196. \gdef\acu:a{\accent19 a}
  197. \gdef\acu:A{\accent19 A}
  198. \gdef\acu:e{\accent19 e}
  199. \gdef\acu:E{\accent19 E}
  200. \gdef\acu:i{\accent19 \char16 }
  201. \gdef\acu:I{\accent19 I}
  202. \gdef\acu:o{\accent19 o}
  203. \gdef\acu:O{\accent19 O}
  204. \gdef\acu:u{\accent19 u}
  205. \gdef\acu:U{\accent19 U}
  206. \gdef\acu:y{\accent19 y}
  207. \gdef\acu:Y{\accent19 Y}
  208. \gdef\ang:a{\accent23 a}
  209. \gdef\ang:A{\accent23 A}
  210. \gdef\ced:C{C\bs:{\char24 }}
  211. \gdef\ced:c{c\bs:{\char24 }}
  212. \gdef\cir:a{\accent94 a}
  213. \gdef\cir:A{\accent94 A}
  214. \gdef\cir:e{\accent94 e}
  215. \gdef\cir:E{\accent94 E}
  216. \gdef\cir:i{\accent94 \char16 }
  217. \gdef\cir:I{\accent94 I}
  218. \gdef\cir:o{\accent94 o}
  219. \gdef\cir:O{\accent94 O}
  220. \gdef\cir:u{\accent94 u}
  221. \gdef\cir:U{\accent94 U}
  222. \gdef\dia:o{\char28 }
  223. \gdef\dia:O{\char31 }
  224. \gdef\gra:a{\accent18 a}
  225. \gdef\gra:A{\accent18 A}
  226. \gdef\gra:e{\accent18 e}
  227. \gdef\gra:E{\accent18 E}
  228. \gdef\gra:i{\accent18 \char16 }
  229. \gdef\gra:I{\accent18 I}
  230. \gdef\gra:o{\accent18 o}
  231. \gdef\gra:O{\accent18 O}
  232. \gdef\gra:u{\accent18 u}
  233. \gdef\gra:U{\accent18 U}
  234. \gdef\lig:ae{\char26 }
  235. \gdef\lig:AE{\char29 }
  236. \gdef\til:a{\accent126 a}
  237. \gdef\til:A{\accent126 A}
  238. \gdef\til:n{\accent126 n}
  239. \gdef\til:N{\accent126 N}
  240. \gdef\til:o{\accent126 o}
  241. \gdef\til:O{\accent126 O}
  242. \gdef\uml:a{\accent127 a}
  243. \gdef\uml:A{\accent127 A}
  244. \gdef\uml:e{\accent127 e}
  245. \gdef\uml:E{\accent127 E}
  246. \gdef\uml:i{\accent127 \char16 }
  247. \gdef\uml:I{\accent127 I}
  248. \gdef\uml:o{\accent127 o}
  249. \gdef\uml:O{\accent127 O}
  250. \gdef\uml:u{\accent127 u}
  251. \gdef\uml:U{\accent127 U}
  252. \gdef\uml:y{\accent127 y}
  253. \gdef\:eszet{\char25 }
  254.  
  255. % Definition der graphischen Zeichen im 9x9-Raster als Makros
  256.  
  257. \gdef\box:full{\G:{\B:0909}}
  258. \gdef\box:halfhigh{\G:{\B:09{4.5}9}}
  259. \gdef\box:halfleft{\G:{\B:090{4.5}}}
  260. \gdef\box:halflow{\G:{\B:0{4.5}09}}
  261. \gdef\box:halfright{\G:{\B:{4.5}90{4.5}}}
  262. \gdef\box:light{\G:{\B:1901\B:4901\B:7901}}
  263. \gdef\box:medium{\G:{\B:{0.5}902\B:{3.5}902\B:{6.5}902}}
  264. \gdef\box:dark{\G:{\B:{0.5}902\B:{3.5}902\B:{6.5}902\B:0879\B:0549\B:0219}}
  265. \gdef\box:small{\G:{\B:3633}}
  266. \gdef\bar:DDLLRR{\G:{\B:0659\B:0432\B:2401\B:6401\B:7432}}
  267. \gdef\bar:DDLL{\G:{\B:0432\B:2401\B:0656\B:6601}}
  268. \gdef\bar:DDRR{\G:{\B:2601\B:3656\B:6401\B:7432}}
  269. \gdef\bar:DLR{\G:{\B:0549\B:4501}}
  270. \gdef\bar:DL{\G:{\B:0544\B:4501}}
  271. \gdef\bar:DR{\G:{\B:4501\B:5544}}
  272. \gdef\bar:LLRR{\G:{\B:0439\B:0659}}
  273. \gdef\bar:LR{\G:{\B:0549}}
  274. \gdef\bar:UDLR{\G:{\B:0549\B:4901}}
  275. \gdef\bar:UDL{\G:{\B:0544\B:4901}}
  276. \gdef\bar:UDR{\G:{\B:4901\B:5544}}
  277. \gdef\bar:UD{\G:{\B:4901}}
  278. \gdef\bar:ULR{\G:{\B:0549\B:4951}}
  279. \gdef\bar:UL{\G:{\B:0544\B:4941}}
  280. \gdef\bar:UR{\G:{\B:4941\B:5544}}
  281. \gdef\bar:UUDDLLRR{\G:{\B:0652\B:2951\B:6951\B:7652\B:0432\B:2401\B:6401\B:7432}}
  282. \gdef\bar:UUDDLL{\G:{\B:0652\B:2951\B:0432\B:2401\B:6901}}
  283. \gdef\bar:UUDDRR{\G:{\B:2901\B:6951\B:7652\B:6401\B:7432}}
  284. \gdef\bar:UUDD{\G:{\B:2901\B:6901}}
  285. \gdef\bar:UULLRR{\G:{\B:0439\B:0652\B:2951\B:6951\B:7652}}
  286. \gdef\bar:UULL{\G:{\B:0652\B:2951\B:0436\B:6931}}
  287. \gdef\bar:UURR{\G:{\B:2931\B:3436\B:6951\B:7652}}
  288. \gdef\bar:UDLL{\G:{\B:0434\B:0654\B:4901}}
  289. \gdef\bar:UUDDL{\G:{\B:0542\B:2901\B:6901}}
  290. \gdef\bar:DDL{\G:{\B:0546\B:2401\B:6501}}
  291. \gdef\bar:DLL{\G:{\B:0434\B:0654\B:4601}}
  292. \gdef\bar:UUL{\G:{\B:0546\B:2951\B:6941}}
  293. \gdef\bar:ULL{\G:{\B:0434\B:0654\B:4931}}
  294. \gdef\bar:UDRR{\G:{\B:4901\B:5435\B:5655}}
  295. \gdef\bar:UUDDR{\G:{\B:2901\B:6901\B:7543}}
  296. \gdef\bar:ULLRR{\G:{\B:0439\B:0659\B:4961}}
  297. \gdef\bar:UULR{\G:{\B:0549\B:2951\B:6951}}
  298. \gdef\bar:DLLRR{\G:{\B:0439\B:0659\B:4401}}
  299. \gdef\bar:DDLR{\G:{\B:0549\B:2401\B:6501}}
  300. \gdef\bar:UUR{\G:{\B:2547\B:2951\B:6951}}
  301. \gdef\bar:URR{\G:{\B:4931\B:5435\B:5655}}
  302. \gdef\bar:DRR{\G:{\B:4601\B:5435\B:5655}}
  303. \gdef\bar:DDR{\G:{\B:2547\B:2401\B:6501}}
  304. \gdef\bar:UUDDLR{\G:{\B:2901\B:6901\B:0549}}
  305. \gdef\bar:UDLLRR{\G:{\B:0439\B:0659\B:4901}}
  306.  
  307. % Definition der sonstige Zeichen als Makros
  308.  
  309. \gdef\ctl:at{\ctl:{@}}
  310. \gdef\ctl:a{\ctl:{A}}
  311. \gdef\ctl:b{\ctl:{B}}
  312. \gdef\ctl:c{\ctl:{C}}
  313. \gdef\ctl:d{\ctl:{D}}
  314. \gdef\ctl:e{\ctl:{E}}
  315. \gdef\ctl:f{\ctl:{F}}
  316. \gdef\ctl:g{\ctl:{G}}
  317. \gdef\ctl:h{\ctl:{H}}
  318. \gdef\ctl:i{\ctl:{I}}
  319. \gdef\ctl:j{\ctl:{J}}
  320. \gdef\ctl:k{\ctl:{K}}
  321. \gdef\ctl:l{\ctl:{L}}
  322. \gdef\ctl:m{\ctl:{M}}
  323. \gdef\ctl:n{\ctl:{N}}
  324. \gdef\ctl:o{\ctl:{O}}
  325. \gdef\ctl:p{\ctl:{P}}
  326. \gdef\ctl:q{\ctl:{Q}}
  327. \gdef\ctl:r{\ctl:{R}}
  328. \gdef\ctl:s{\ctl:{S}}
  329. \gdef\ctl:t{\ctl:{T}}
  330. \gdef\ctl:u{\ctl:{U}}
  331. \gdef\ctl:v{\ctl:{V}}
  332. \gdef\ctl:w{\ctl:{W}}
  333. \gdef\ctl:x{\ctl:{X}}
  334. \gdef\ctl:y{\ctl:{Y}}
  335. \gdef\ctl:z{\ctl:{Z}}
  336. \gdef\ctl:aa{\ctl:{[}}
  337. \gdef\ctl:bb{\ctl:{\char92 }}
  338. \gdef\ctl:cc{\ctl:{]}}
  339. \gdef\ctl:dd{\ctl:{\char94 }}
  340. \gdef\ctl:ee{\ctl:{\char95 }}
  341. \gdef\ctlx:at{\ctlx:{@}}
  342. \gdef\ctlx:a{\ctlx:{A}}
  343. \gdef\ctlx:b{\ctlx:{B}}
  344. \gdef\ctlx:c{\ctlx:{C}}
  345. \gdef\ctlx:d{\ctlx:{D}}
  346. \gdef\ctlx:e{\ctlx:{E}}
  347. \gdef\ctlx:f{\ctlx:{F}}
  348. \gdef\ctlx:g{\ctlx:{G}}
  349. \gdef\ctlx:h{\ctlx:{H}}
  350. \gdef\ctlx:i{\ctlx:{I}}
  351. \gdef\ctlx:j{\ctlx:{J}}
  352. \gdef\ctlx:k{\ctlx:{K}}
  353. \gdef\ctlx:l{\ctlx:{L}}
  354. \gdef\ctlx:m{\ctlx:{M}}
  355. \gdef\ctlx:n{\ctlx:{N}}
  356. \gdef\ctlx:o{\ctlx:{O}}
  357. \gdef\ctlx:p{\ctlx:{P}}
  358. \gdef\ctlx:q{\ctlx:{Q}}
  359. \gdef\ctlx:r{\ctlx:{R}}
  360. \gdef\ctlx:s{\ctlx:{S}}
  361. \gdef\ctlx:t{\ctlx:{T}}
  362. \gdef\ctlx:u{\ctlx:{U}}
  363. \gdef\ctlx:v{\ctlx:{V}}
  364. \gdef\ctlx:w{\ctlx:{W}}
  365. \gdef\ctlx:x{\ctlx:{X}}
  366. \gdef\ctlx:y{\ctlx:{Y}}
  367. \gdef\ctlx:z{\ctlx:{Z}}
  368. \gdef\ctlx:aa{\ctlx:{[}}
  369. \gdef\ctlx:bb{\ctlx:{\char92 }}
  370. \gdef\ctlx:cc{\ctlx:{]}}
  371. \gdef\ctlx:dd{\ctlx:{\char94 }}
  372. \gdef\ctlx:ee{\ctlx:{\char95 }}
  373.  
  374. \gdef\:Delta{\char1 }
  375. \gdef\:Eth{D\bs:-}
  376. \gdef\:Gamma{\char0 }
  377. \gdef\:Omega{\char10 }
  378. \gdef\:Pesetas{P\bs:\hbox{\kern1\x: t\kern-1\x:}}
  379. \gdef\:Phi{\char9 }
  380. \gdef\:Pi{\char5 }
  381. \gdef\:Sigma{\char6 }
  382. \gdef\:Theta{\char2 }
  383. \gdef\:Thorn{\sym:{\rlap{\kern-.07em\rm I}\up:{2\y:}{$\scriptscriptstyle\supset$}}}
  384. \gdef\:Yen{Y\bs:\up:{-\y:}{-}}
  385. \gdef\:alpha{\sym:{$\alpha$}}
  386. \gdef\:approx{\up:{\y:}{\sym:{$\scriptstyle\approx$}}}
  387. \gdef\:arrdn{\up:{\y:}{\sym:{$\scriptstyle\downarrow$}}}
  388. \gdef\:arrlfrt{\up:{\y:}{\sym:{$\scriptscriptstyle\leftrightarrow$}}}
  389. \gdef\:arrlf{\up:{\y:}{\sym:{$\scriptscriptstyle\leftarrow$}}}
  390. \gdef\:arrrt{\up:{\y:}{\sym:{$\scriptscriptstyle\rightarrow$}}}
  391. \gdef\:arrupdn{\up:{\y:}{\sym:{$\scriptstyle\updownarrow$}}}
  392. \gdef\:arrup{\up:{\y:}{\sym:{$\scriptstyle\uparrow$}}}
  393. \gdef\:bigcursor{\sym:{\vrule height.5ex depth0ex width7\x:}}
  394. \gdef\:bigdot{\sym:{$\bullet$}}
  395. \gdef\:bigmiddledot{\up:{\y:}{\sym:{$\scriptstyle\bullet$}}}
  396. \gdef\:brokenvbar{\G:{\B:4851\B:4411}}
  397. \gdef\:cent{c\bs:\up:{-.2ex}{\char124 }}
  398. \gdef\:circ{\sym:{$\circ$}}
  399. \gdef\:copyright{\cbox:{\kern-.2em(\hss\up:{.2ex}{c}\hss)\kern-.2em}}
  400. \gdef\:currency{\up:{.5\y:}{\sym:{$\scriptstyle\cap$}}\bs:\up:{\y:}{\sym:{$\scriptstyle\cup$}}}
  401. \gdef\:cut{\sym:{$\cap$}}
  402. \gdef\:degree{\sym:{$^\circ$}}
  403. \gdef\:delta{\sym:{$\delta$}}
  404. \gdef\:diameter{\sym:{$\phi$}}
  405. \gdef\:div{\up:{\y:}{\sym:{$\scriptstyle\div$}}}
  406. \gdef\:dotlessi{\char16 }
  407. \gdef\:doubleexclamationmark{\cbox:{\kern-.1em!\hss!\kern-.1em}}
  408. \gdef\:doubleunderscore{\char95 \bs:\up:{-\y:}{\char95 }}
  409. \gdef\:elementof{\sym:{$\in$}}
  410. \gdef\:eth{d\bs:{\char22 }}
  411. \gdef\:female{\up:{2\y:}{o}\bs:\up:{-2\y:}{+}}
  412. \gdef\:fixblank{\ }
  413. \gdef\:florin{\sym:{\it f}}
  414. \gdef\:frenchleftquotes{\sym:{<\kern-.3em<}}
  415. \gdef\:frenchrightquotes{\sym:{>\kern-.3em>}}
  416. \gdef\:ge{<\bs:\char95 }
  417. \gdef\:herz{\up:{\y:}{\sym:{$\scriptstyle\heartsuit$}}}
  418. \gdef\:identity{\up:{\y:}{\sym:{$\scriptstyle\equiv$}}}
  419. \gdef\:infinity{\up:{\y:}{\sym:{$\scriptstyle\infty$}}}
  420. \gdef\:intlower{\G:{\B:4931\B:2322}}
  421. \gdef\:intupper{\G:{\B:4601\B:5762}}
  422. \gdef\:invertedbigdot{\sym:{$\bullet$}\bs:\G:{\B:0989\B:0109\B:0901\B:8901}}
  423. \gdef\:invertedcirc{\sym:{$\circ$}\bs:\G:{\B:0989\B:0109\B:0901\B:8901}}
  424. \gdef\:invertedexclamationmark{\char14 }
  425. \gdef\:invertednot{\sym:{\rlap{\kern-.18em\up:{-.66ex}{\char13 }}-}}
  426. \gdef\:invertedquestionmark{\char15 }
  427. \gdef\:invertedsmile{\G:{\B:2975\B:1822\B:6822\B:2315\B:2655\B:4761\B:2422\B:5422}}
  428. \gdef\:karo{\up:{\y:}{\sym:{$\scriptstyle\diamondsuit$}}}
  429. \gdef\:kreuz{\up:{\y:}{\sym:{$\scriptstyle\clubsuit$}}}
  430. \gdef\:le{>\bs:\char95 }
  431. \gdef\:male{o\bs:\up:{3\y:}{\sym:{$\scriptscriptstyle\nearrow$}}}
  432. \gdef\:middledot{\cbox:{\up:{.5ex}{.}}}
  433. \gdef\:mirrorednot{\sym:{\rlap{\kern-.18em\up:{-.10ex}{\char13 }}-}}
  434. \gdef\:mu{\sym:{$\mu$}}
  435. \gdef\:not{\sym:{-\llap{\up:{-.66ex}{\char13 }\kern-.18em}}}
  436. \gdef\:null{\ }
  437. \gdef\:onefourth{\up:{\y:}{\sym:{$\scriptstyle{1\over4}$}}}
  438. \gdef\:onehalf{\up:{\y:}{\sym:{$\scriptstyle{1\over2}$}}}
  439. \gdef\:onenote{\G:{\B:1422\B:3831\B:4873\B:4653\B:7851}}
  440. \gdef\:paragraph{\sym:{S\bs:\up:{-.6ex}{S}}}
  441. \gdef\:paramark{\sym:{\P}}
  442. \gdef\:pik{\up:{\y:}{\sym:{$\scriptstyle\spadesuit$}}}
  443. \gdef\:plusminus{+\bs:\char95 }
  444. \gdef\:pound{\sym:{\it\char36 }}
  445. \gdef\:registered{\cbox:{\kern-.2em(\hss R\hss)\kern-.2em}}
  446. \gdef\:root{\up:{\y:}{\sym:{$\scriptscriptstyle\surd$}}}
  447. \gdef\:sigma{\sym:{$\sigma$}}
  448. \gdef\:smile{\G:{\B:2985\B:1821\B:7821\B:2215\B:3761\B:5761\B:3543\B:4431}}
  449. \gdef\:star{\sym:{$\ast$}}
  450. \gdef\:supern{\sym:{$^{\rm n}$}}
  451. \gdef\:superone{\sym:{$^{\scriptscriptstyle1}$}}
  452. \gdef\:superthree{\sym:{$^{\scriptscriptstyle3}$}}
  453. \gdef\:supertwo{\sym:{$^{\scriptscriptstyle2}$}}
  454. \gdef\:syllablehyphen{\sym:{\it\char45 }}
  455. \gdef\:tau{\sym:{$\tau$}}
  456. \gdef\:thorn{\sym:{\rlap{\kern.08em\vrule height\h: depth\d: width\x:}\up:{0.2ex}{$\scriptscriptstyle\supset$}\kern-\x:}}
  457. \gdef\:threefourth{\up:{\y:}{\sym:{$\scriptstyle{3\over4}$}}}
  458. \gdef\:times{\up:{\y:}{\sym:{$\scriptstyle\times$}}}
  459. \gdef\:tridn{\up:{\y:}{\sym:{$\scriptstyle\bigtriangledown$}}}
  460. \gdef\:trilf{\sym:{$\triangleleft$}}
  461. \gdef\:trirt{\sym:{$\triangleright$}}
  462. \gdef\:triup{\up:{\y:}{\sym:{$\scriptstyle\bigtriangleup$}}}
  463. \gdef\:twonote{\G:{\B:0312\B:2821\B:5422\B:7831\B:3874\B:3654}}
  464. \gdef\:umera{\cbox:{\up:{.3ex}{\char95 }\bs:\up:{.4ex}{a}}}
  465. \gdef\:umero{\cbox:{\up:{.3ex}{\char95 }\bs:\up:{.4ex}{o}}}
  466. \gdef\:updnbar{\up:{\y:}{\sym:{$\scriptstyle\updownarrow$}\bs:\G:{\B:2105}}}
  467.  
  468. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  469. %                                                                      %
  470. %  Zweiter Teil: Definition der Makros zum Setzen der Sonderzeichen    %
  471. %                                                                      %
  472. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  473.  
  474. \gdef\v:normalize{%
  475. \catcode`\^^21=12\catcode`\^^22=12\catcode`\^^23=12%
  476. \catcode`\^^24=12\catcode`\^^25=12\catcode`\^^26=12\catcode`\^^27=12%
  477. \catcode`\^^28=12\catcode`\^^29=12\catcode`\^^2a=12\catcode`\^^2b=12%
  478. \catcode`\^^2c=12\catcode`\^^2d=12\catcode`\^^2e=12\catcode`\^^2f=12%
  479. \catcode`\^^30=12\catcode`\^^31=12\catcode`\^^32=12\catcode`\^^33=12%
  480. \catcode`\^^34=12\catcode`\^^35=12\catcode`\^^36=12\catcode`\^^37=12%
  481. \catcode`\^^38=12\catcode`\^^39=12\catcode`\^^3a=12\catcode`\^^3b=12%
  482. \catcode`\^^3c=12\catcode`\^^3d=12\catcode`\^^3e=12\catcode`\^^3f=12%
  483. \catcode`\^^40=12\catcode`\^^41=11\catcode`\^^42=11\catcode`\^^43=11%
  484. \catcode`\^^44=11\catcode`\^^45=11\catcode`\^^46=11\catcode`\^^47=11%
  485. \catcode`\^^48=11\catcode`\^^49=11\catcode`\^^4a=11\catcode`\^^4b=11%
  486. \catcode`\^^4c=11\catcode`\^^4d=11\catcode`\^^4e=11\catcode`\^^4f=11%
  487. \catcode`\^^50=11\catcode`\^^51=11\catcode`\^^52=11\catcode`\^^53=11%
  488. \catcode`\^^54=11\catcode`\^^55=11\catcode`\^^56=11\catcode`\^^57=11%
  489. \catcode`\^^58=11\catcode`\^^59=11\catcode`\^^5a=11\catcode`\^^5b=12%
  490. \catcode`\^^5c=12\catcode`\^^5d=12\catcode`\^^5e=12%
  491. \catcode`\^^61=11\catcode`\^^62=11\catcode`\^^63=11%
  492. \catcode`\^^64=11\catcode`\^^65=11\catcode`\^^66=11\catcode`\^^67=11%
  493. \catcode`\^^68=11\catcode`\^^69=11\catcode`\^^6a=11\catcode`\^^6b=11%
  494. \catcode`\^^6c=11\catcode`\^^6d=11\catcode`\^^6e=11\catcode`\^^6f=11%
  495. \catcode`\^^70=11\catcode`\^^71=11\catcode`\^^72=11\catcode`\^^73=11%
  496. \catcode`\^^74=11\catcode`\^^75=11\catcode`\^^76=11\catcode`\^^77=11%
  497. \catcode`\^^78=11\catcode`\^^79=11\catcode`\^^7a=11\catcode`\^^7b=12%
  498. \catcode`\^^7c=12\catcode`\^^7d=12\catcode`\^^7e=12%
  499. }
  500.  
  501. \gdef\v:activate{%
  502. \catcode`\^^00=13\catcode`\^^01=13\catcode`\^^02=13\catcode`\^^03=13%
  503. \catcode`\^^04=13\catcode`\^^05=13\catcode`\^^06=13\catcode`\^^07=13%
  504. \catcode`\^^08=13\catcode`\^^09=13\catcode`\^^0a=13\catcode`\^^0b=13%
  505. \catcode`\^^0c=13\catcode`\^^0d=13\catcode`\^^0e=13\catcode`\^^0f=13%
  506. \catcode`\^^10=13\catcode`\^^11=13\catcode`\^^12=13\catcode`\^^13=13%
  507. \catcode`\^^14=13\catcode`\^^15=13\catcode`\^^16=13\catcode`\^^17=13%
  508. \catcode`\^^18=13\catcode`\^^19=13\catcode`\^^1a=13\catcode`\^^1b=13%
  509. \catcode`\^^1c=13\catcode`\^^1d=13\catcode`\^^1e=13\catcode`\^^1f=13%
  510. \catcode`\^^20=13\catcode`\^^5f=13\catcode`\^^60=13\catcode`\^^7f=13%
  511. \catcode`\^^80=13\catcode`\^^81=13\catcode`\^^82=13\catcode`\^^83=13%
  512. \catcode`\^^84=13\catcode`\^^85=13\catcode`\^^86=13\catcode`\^^87=13%
  513. \catcode`\^^88=13\catcode`\^^89=13\catcode`\^^8a=13\catcode`\^^8b=13%
  514. \catcode`\^^8c=13\catcode`\^^8d=13\catcode`\^^8e=13\catcode`\^^8f=13%
  515. \catcode`\^^90=13\catcode`\^^91=13\catcode`\^^92=13\catcode`\^^93=13%
  516. \catcode`\^^94=13\catcode`\^^95=13\catcode`\^^96=13\catcode`\^^97=13%
  517. \catcode`\^^98=13\catcode`\^^99=13\catcode`\^^9a=13\catcode`\^^9b=13%
  518. \catcode`\^^9c=13\catcode`\^^9d=13\catcode`\^^9e=13\catcode`\^^9f=13%
  519. \catcode`\^^a0=13\catcode`\^^a1=13\catcode`\^^a2=13\catcode`\^^a3=13%
  520. \catcode`\^^a4=13\catcode`\^^a5=13\catcode`\^^a6=13\catcode`\^^a7=13%
  521. \catcode`\^^a8=13\catcode`\^^a9=13\catcode`\^^aa=13\catcode`\^^ab=13%
  522. \catcode`\^^ac=13\catcode`\^^ad=13\catcode`\^^ae=13\catcode`\^^af=13%
  523. \catcode`\^^b0=13\catcode`\^^b1=13\catcode`\^^b2=13\catcode`\^^b3=13%
  524. \catcode`\^^b4=13\catcode`\^^b5=13\catcode`\^^b6=13\catcode`\^^b7=13%
  525. \catcode`\^^b8=13\catcode`\^^b9=13\catcode`\^^ba=13\catcode`\^^bb=13%
  526. \catcode`\^^bc=13\catcode`\^^bd=13\catcode`\^^be=13\catcode`\^^bf=13%
  527. \catcode`\^^c0=13\catcode`\^^c1=13\catcode`\^^c2=13\catcode`\^^c3=13%
  528. \catcode`\^^c4=13\catcode`\^^c5=13\catcode`\^^c6=13\catcode`\^^c7=13%
  529. \catcode`\^^c8=13\catcode`\^^c9=13\catcode`\^^ca=13\catcode`\^^cb=13%
  530. \catcode`\^^cc=13\catcode`\^^cd=13\catcode`\^^ce=13\catcode`\^^cf=13%
  531. \catcode`\^^d0=13\catcode`\^^d1=13\catcode`\^^d2=13\catcode`\^^d3=13%
  532. \catcode`\^^d4=13\catcode`\^^d5=13\catcode`\^^d6=13\catcode`\^^d7=13%
  533. \catcode`\^^d8=13\catcode`\^^d9=13\catcode`\^^da=13\catcode`\^^db=13%
  534. \catcode`\^^dc=13\catcode`\^^dd=13\catcode`\^^de=13\catcode`\^^df=13%
  535. \catcode`\^^e0=13\catcode`\^^e1=13\catcode`\^^e2=13\catcode`\^^e3=13%
  536. \catcode`\^^e4=13\catcode`\^^e5=13\catcode`\^^e6=13\catcode`\^^e7=13%
  537. \catcode`\^^e8=13\catcode`\^^e9=13\catcode`\^^ea=13\catcode`\^^eb=13%
  538. \catcode`\^^ec=13\catcode`\^^ed=13\catcode`\^^ee=13\catcode`\^^ef=13%
  539. \catcode`\^^f0=13\catcode`\^^f1=13\catcode`\^^f2=13\catcode`\^^f3=13%
  540. \catcode`\^^f4=13\catcode`\^^f5=13\catcode`\^^f6=13\catcode`\^^f7=13%
  541. \catcode`\^^f8=13\catcode`\^^f9=13\catcode`\^^fa=13\catcode`\^^fb=13%
  542. \catcode`\^^fc=13\catcode`\^^fd=13\catcode`\^^fe=13\catcode`\^^ff=13%
  543. }
  544.  
  545. \begingroup
  546. \v:activate%
  547. %
  548. \gdef\v:iso{%
  549. \v:normalize%
  550. \v:activate%
  551. \let^^00=\ctl:at%
  552. \let^^01=\ctl:a%
  553. \let^^02=\ctl:b%
  554. \let^^03=\ctl:c%
  555. \let^^04=\ctl:d%
  556. \let^^05=\ctl:e%
  557. \let^^06=\ctl:f%
  558. \let^^07=\ctl:g%
  559. \let^^08=\v:BS%
  560. \let^^09=\v:HT%
  561. \let^^0a=\v:LF%
  562. \let^^0b=\v:VT%
  563. \let^^0c=\v:FF%
  564. \let^^0d=\v:CR%
  565. \let^^0e=\ctl:n%
  566. \let^^0f=\ctl:o%
  567. \let^^10=\ctl:p%
  568. \let^^11=\ctl:q%
  569. \let^^12=\ctl:r%
  570. \let^^13=\ctl:s%
  571. \let^^14=\ctl:t%
  572. \let^^15=\ctl:u%
  573. \let^^16=\ctl:v%
  574. \let^^17=\ctl:w%
  575. \let^^18=\ctl:x%
  576. \let^^19=\ctl:y%
  577. \let^^1a=\ctl:z%
  578. \let^^1b=\ctl:aa%
  579. \let^^1c=\ctl:bb%
  580. \let^^1d=\ctl:cc%
  581. \let^^1e=\ctl:dd%
  582. \let^^1f=\ctl:ee%
  583. \let^^20=\:sp%
  584. \let^^5f=\:us%
  585. \let^^60=\:gr%
  586. \let^^7f=\:Delta%
  587. \let^^80=\bar:LR%
  588. \let^^81=\bar:UD%
  589. \let^^82=\bar:UR%
  590. \let^^83=\bar:UL%
  591. \let^^84=\bar:DL%
  592. \let^^85=\bar:DR%
  593. \let^^86=\bar:UDR%
  594. \let^^87=\bar:ULR%
  595. \let^^88=\bar:UDL%
  596. \let^^89=\bar:DLR%
  597. \let^^8a=\bar:UDLR%
  598. \let^^8b=\box:light%
  599. \let^^8c=\box:medium%
  600. \let^^8d=\box:dark%
  601. \let^^8e=\:dotlessi%
  602. \let^^8f=\:doubleunderscore%
  603. \let^^90=\bar:LLRR%
  604. \let^^91=\bar:UUDD%
  605. \let^^92=\bar:UURR%
  606. \let^^93=\bar:UULL%
  607. \let^^94=\bar:DDLL%
  608. \let^^95=\bar:DDRR%
  609. \let^^96=\bar:UUDDRR%
  610. \let^^97=\bar:UULLRR%
  611. \let^^98=\bar:UUDDLL%
  612. \let^^99=\bar:DDLLRR%
  613. \let^^9a=\bar:UUDDLLRR%
  614. \let^^9b=\box:halfhigh%
  615. \let^^9c=\box:halflow%
  616. \let^^9d=\box:full%
  617. \let^^9e=\box:small%
  618. \let^^9f=\:florin%
  619. \let^^a0=\:fixblank%
  620. \let^^a1=\:invertedexclamationmark%
  621. \let^^a2=\:cent%
  622. \let^^a3=\:pound%
  623. \let^^a4=\:currency%
  624. \let^^a5=\:Yen%
  625. \let^^a6=\:brokenvbar%
  626. \let^^a7=\:paragraph%
  627. \let^^a8=\:umlaut%
  628. \let^^a9=\:copyright%
  629. \let^^aa=\:umera%
  630. \let^^ab=\:frenchleftquotes%
  631. \let^^ac=\:not%
  632. \let^^ad=\:syllablehyphen%
  633. \let^^ae=\:registered%
  634. \let^^af=\:macron%
  635. \let^^b0=\:degree%
  636. \let^^b1=\:plusminus%
  637. \let^^b2=\:supertwo%
  638. \let^^b3=\:superthree%
  639. \let^^b4=\:acute%
  640. \let^^b5=\:mu%
  641. \let^^b6=\:paramark%
  642. \let^^b7=\:middledot%
  643. \let^^b8=\:cedilla%
  644. \let^^b9=\:superone%
  645. \let^^ba=\:umero%
  646. \let^^bb=\:frenchrightquotes%
  647. \let^^bc=\:onefourth%
  648. \let^^bd=\:onehalf%
  649. \let^^be=\:threefourth%
  650. \let^^bf=\:invertedquestionmark%
  651. \let^^c0=\gra:A%
  652. \let^^c1=\acu:A%
  653. \let^^c2=\cir:A%
  654. \let^^c3=\til:A%
  655. \let^^c4=\uml:A%
  656. \let^^c5=\ang:A%
  657. \let^^c6=\lig:AE%
  658. \let^^c7=\ced:C%
  659. \let^^c8=\gra:E%
  660. \let^^c9=\acu:E%
  661. \let^^ca=\cir:E%
  662. \let^^cb=\uml:E%
  663. \let^^cc=\gra:I%
  664. \let^^cd=\acu:I%
  665. \let^^ce=\cir:I%
  666. \let^^cf=\uml:I%
  667. \let^^d0=\:Eth%
  668. \let^^d1=\til:N%
  669. \let^^d2=\gra:O%
  670. \let^^d3=\acu:O%
  671. \let^^d4=\cir:O%
  672. \let^^d5=\til:O%
  673. \let^^d6=\uml:O%
  674. \let^^d7=\:times%
  675. \let^^d8=\dia:O%
  676. \let^^d9=\gra:U%
  677. \let^^da=\acu:U%
  678. \let^^db=\cir:U%
  679. \let^^dc=\uml:U%
  680. \let^^dd=\acu:Y%
  681. \let^^de=\:Thorn%
  682. \let^^df=\:eszet%
  683. \let^^e0=\gra:a%
  684. \let^^e1=\acu:a%
  685. \let^^e2=\cir:a%
  686. \let^^e3=\til:a%
  687. \let^^e4=\uml:a%
  688. \let^^e5=\ang:a%
  689. \let^^e6=\lig:ae%
  690. \let^^e7=\ced:c%
  691. \let^^e8=\gra:e%
  692. \let^^e9=\acu:e%
  693. \let^^ea=\cir:e%
  694. \let^^eb=\uml:e%
  695. \let^^ec=\gra:i%
  696. \let^^ed=\acu:i%
  697. \let^^ee=\cir:i%
  698. \let^^ef=\uml:i%
  699. \let^^f0=\:eth%
  700. \let^^f1=\til:n%
  701. \let^^f2=\gra:o%
  702. \let^^f3=\acu:o%
  703. \let^^f4=\cir:o%
  704. \let^^f5=\til:o%
  705. \let^^f6=\uml:o%
  706. \let^^f7=\:div%
  707. \let^^f8=\dia:o%
  708. \let^^f9=\gra:u%
  709. \let^^fa=\acu:u%
  710. \let^^fb=\cir:u%
  711. \let^^fc=\uml:u%
  712. \let^^fd=\acu:y%
  713. \let^^fe=\:thorn%
  714. \let^^ff=\uml:y%
  715. }%
  716. %
  717. \gdef\v::iso{%
  718. \let^^08=\ctl:h%
  719. \let^^09=\ctl:i%
  720. \let^^0a=\ctl:j%
  721. \let^^0b=\ctl:k%
  722. \let^^0c=\ctl:l%
  723. \let^^0d=\ctl:m%
  724. }%
  725. %
  726. \gdef\v:ibm{%
  727. \v:normalize%
  728. \v:activate%
  729. \let^^00=\:null%
  730. \let^^01=\:smile%
  731. \let^^02=\:invertedsmile%
  732. \let^^03=\:herz%
  733. \let^^04=\:karo%
  734. \let^^05=\:kreuz%
  735. \let^^06=\:pik%
  736. \let^^07=\:bigdot%
  737. \let^^08=\v:BS%
  738. \let^^09=\v:HT%
  739. \let^^0a=\v:LF%
  740. \let^^0b=\v:VT%
  741. \let^^0c=\v:FF%
  742. \let^^0d=\v:CR%
  743. \let^^0e=\:twonote%
  744. \let^^0f=\:star%
  745. \let^^10=\:trirt%
  746. \let^^11=\:trilf%
  747. \let^^12=\:arrupdn%
  748. \let^^13=\:doubleexclamationmark%
  749. \let^^14=\:paramark%
  750. \let^^15=\:paragraph%
  751. \let^^16=\:bigcursor%
  752. \let^^17=\:updnbar%
  753. \let^^18=\:arrup%
  754. \let^^19=\:arrdn%
  755. \let^^1a=\:arrrt%
  756. \let^^1b=\:arrlf%
  757. \let^^1c=\:mirrorednot%
  758. \let^^1d=\:arrlfrt%
  759. \let^^1e=\:triup%
  760. \let^^1f=\:tridn%
  761. \let^^20=\:sp%
  762. \let^^5f=\:us%
  763. \let^^60=\:gr%
  764. \let^^7f=\:Delta%
  765. \let^^80=\ced:C%
  766. \let^^81=\uml:u%
  767. \let^^82=\acu:e%
  768. \let^^83=\cir:a%
  769. \let^^84=\uml:a%
  770. \let^^85=\gra:a%
  771. \let^^86=\ang:a%
  772. \let^^87=\ced:c%
  773. \let^^88=\cir:e%
  774. \let^^89=\uml:e%
  775. \let^^8a=\gra:e%
  776. \let^^8b=\uml:i%
  777. \let^^8c=\cir:i%
  778. \let^^8d=\gra:i%
  779. \let^^8e=\uml:A%
  780. \let^^8f=\ang:A%
  781. \let^^90=\acu:E%
  782. \let^^91=\lig:ae%
  783. \let^^92=\lig:AE%
  784. \let^^93=\cir:o%
  785. \let^^94=\uml:o%
  786. \let^^95=\gra:o%
  787. \let^^96=\cir:u%
  788. \let^^97=\gra:u%
  789. \let^^98=\uml:y%
  790. \let^^99=\uml:O%
  791. \let^^9a=\uml:U%
  792. \let^^9b=\dia:o%
  793. \let^^9c=\:pound%
  794. \let^^9d=\dia:O%
  795. \let^^9e=\:times%
  796. \let^^9f=\:florin%
  797. \let^^a0=\acu:a%
  798. \let^^a1=\acu:i%
  799. \let^^a2=\acu:o%
  800. \let^^a3=\acu:u%
  801. \let^^a4=\til:n%
  802. \let^^a5=\til:N%
  803. \let^^a6=\:umera%
  804. \let^^a7=\:umero%
  805. \let^^a8=\:invertedquestionmark%
  806. \let^^a9=\:registered%
  807. \let^^aa=\:not%
  808. \let^^ab=\:onehalf%
  809. \let^^ac=\:onefourth%
  810. \let^^ad=\:invertedexclamationmark%
  811. \let^^ae=\:frenchleftquotes%
  812. \let^^af=\:frenchrightquotes%
  813. \let^^b0=\box:light%
  814. \let^^b1=\box:medium%
  815. \let^^b2=\box:dark%
  816. \let^^b3=\bar:UD%
  817. \let^^b4=\bar:UDL%
  818. \let^^b5=\acu:A%
  819. \let^^b6=\cir:A%
  820. \let^^b7=\gra:A%
  821. \let^^b8=\:copyright%
  822. \let^^b9=\bar:UUDDLL%
  823. \let^^ba=\bar:UUDD%
  824. \let^^bb=\bar:DDLL%
  825. \let^^bc=\bar:UULL%
  826. \let^^bd=\:cent%
  827. \let^^be=\:Yen%
  828. \let^^bf=\bar:DL%
  829. \let^^c0=\bar:UR%
  830. \let^^c1=\bar:ULR%
  831. \let^^c2=\bar:DLR%
  832. \let^^c3=\bar:UDR%
  833. \let^^c4=\bar:LR%
  834. \let^^c5=\bar:UDLR%
  835. \let^^c6=\til:a%
  836. \let^^c7=\til:A%
  837. \let^^c8=\bar:UURR%
  838. \let^^c9=\bar:DDRR%
  839. \let^^ca=\bar:UULLRR%
  840. \let^^cb=\bar:DDLLRR%
  841. \let^^cc=\bar:UUDDRR%
  842. \let^^cd=\bar:LLRR%
  843. \let^^ce=\bar:UUDDLLRR%
  844. \let^^cf=\:currency%
  845. \let^^d0=\:eth%
  846. \let^^d1=\:Eth%
  847. \let^^d2=\cir:E%
  848. \let^^d3=\uml:E%
  849. \let^^d4=\gra:E%
  850. \let^^d5=\:dotlessi%
  851. \let^^d6=\acu:I%
  852. \let^^d7=\cir:I%
  853. \let^^d8=\uml:I%
  854. \let^^d9=\bar:UL%
  855. \let^^da=\bar:DR%
  856. \let^^db=\box:full%
  857. \let^^dc=\box:halflow%
  858. \let^^dd=\:brokenvbar%
  859. \let^^de=\gra:I%
  860. \let^^df=\box:halfhigh%
  861. \let^^e0=\acu:O%
  862. \let^^e1=\:eszet%
  863. \let^^e2=\cir:O%
  864. \let^^e3=\gra:O%
  865. \let^^e4=\til:o%
  866. \let^^e5=\til:O%
  867. \let^^e6=\:mu%
  868. \let^^e7=\:thorn%
  869. \let^^e8=\:Thorn%
  870. \let^^e9=\acu:U%
  871. \let^^ea=\cir:U%
  872. \let^^eb=\gra:U%
  873. \let^^ec=\acu:y%
  874. \let^^ed=\acu:Y%
  875. \let^^ee=\:macron%
  876. \let^^ef=\:acute%
  877. \let^^f0=\:syllablehyphen%
  878. \let^^f1=\:plusminus%
  879. \let^^f2=\:doubleunderscore%
  880. \let^^f3=\:threefourth%
  881. \let^^f4=\:paramark%
  882. \let^^f5=\:paragraph%
  883. \let^^f6=\:div%
  884. \let^^f7=\:cedilla%
  885. \let^^f8=\:degree%
  886. \let^^f9=\:umlaut%
  887. \let^^fa=\:middledot%
  888. \let^^fb=\:superone%
  889. \let^^fc=\:superthree%
  890. \let^^fd=\:supertwo%
  891. \let^^fe=\box:small%
  892. \let^^ff=\:fixblank%
  893. }%
  894. %
  895. \gdef\v::ibm{%
  896. \let^^08=\:invertedbigdot%
  897. \let^^09=\:circ%
  898. \let^^0a=\:invertedcirc%
  899. \let^^0b=\:male%
  900. \let^^0c=\:female%
  901. \let^^0d=\:onenote%
  902. }%
  903. %
  904. \gdef\v:pc{%
  905. \v:normalize%
  906. \v:activate%
  907. \let^^00=\:null%
  908. \let^^01=\:smile%
  909. \let^^02=\:invertedsmile%
  910. \let^^03=\:herz%
  911. \let^^04=\:karo%
  912. \let^^05=\:kreuz%
  913. \let^^06=\:pik%
  914. \let^^07=\:bigdot%
  915. \let^^08=\v:BS%
  916. \let^^09=\v:HT%
  917. \let^^0a=\v:LF%
  918. \let^^0b=\v:VT%
  919. \let^^0c=\v:FF%
  920. \let^^0d=\v:CR%
  921. \let^^0e=\:twonote%
  922. \let^^0f=\:star%
  923. \let^^10=\:trirt%
  924. \let^^11=\:trilf%
  925. \let^^12=\:arrupdn%
  926. \let^^13=\:doubleexclamationmark%
  927. \let^^14=\:paramark%
  928. \let^^15=\:paragraph%
  929. \let^^16=\:bigcursor%
  930. \let^^17=\:updnbar%
  931. \let^^18=\:arrup%
  932. \let^^19=\:arrdn%
  933. \let^^1a=\:arrrt%
  934. \let^^1b=\:arrlf%
  935. \let^^1c=\:mirrorednot%
  936. \let^^1d=\:arrlfrt%
  937. \let^^1e=\:triup%
  938. \let^^1f=\:tridn%
  939. \let^^20=\:sp%
  940. \let^^5f=\:us%
  941. \let^^60=\:gr%
  942. \let^^7f=\:Delta%
  943. \let^^80=\ced:C%
  944. \let^^81=\uml:u%
  945. \let^^82=\acu:e%
  946. \let^^83=\cir:a%
  947. \let^^84=\uml:a%
  948. \let^^85=\gra:a%
  949. \let^^86=\ang:a%
  950. \let^^87=\ced:c%
  951. \let^^88=\cir:e%
  952. \let^^89=\uml:e%
  953. \let^^8a=\gra:e%
  954. \let^^8b=\uml:i%
  955. \let^^8c=\cir:i%
  956. \let^^8d=\gra:i%
  957. \let^^8e=\uml:A%
  958. \let^^8f=\ang:A%
  959. \let^^90=\acu:E%
  960. \let^^91=\lig:ae%
  961. \let^^92=\lig:AE%
  962. \let^^93=\cir:o%
  963. \let^^94=\uml:o%
  964. \let^^95=\gra:o%
  965. \let^^96=\cir:u%
  966. \let^^97=\gra:u%
  967. \let^^98=\uml:y%
  968. \let^^99=\uml:O%
  969. \let^^9a=\uml:U%
  970. \let^^9b=\:cent%%%
  971. \let^^9c=\:pound%
  972. \let^^9d=\:Yen%%%
  973. \let^^9e=\:Pesetas%%%
  974. \let^^9f=\:florin%
  975. \let^^a0=\acu:a%
  976. \let^^a1=\acu:i%
  977. \let^^a2=\acu:o%
  978. \let^^a3=\acu:u%
  979. \let^^a4=\til:n%
  980. \let^^a5=\til:N%
  981. \let^^a6=\:umera%
  982. \let^^a7=\:umero%
  983. \let^^a8=\:invertedquestionmark%
  984. \let^^a9=\:invertednot%%%
  985. \let^^aa=\:not%
  986. \let^^ab=\:onehalf%
  987. \let^^ac=\:onefourth%
  988. \let^^ad=\:invertedexclamationmark%
  989. \let^^ae=\:frenchleftquotes%
  990. \let^^af=\:frenchrightquotes%
  991. \let^^b0=\box:light%
  992. \let^^b1=\box:medium%
  993. \let^^b2=\box:dark%
  994. \let^^b3=\bar:UD%
  995. \let^^b4=\bar:UDL%
  996. \let^^b5=\bar:UDLL%%%
  997. \let^^b6=\bar:UUDDL%%%
  998. \let^^b7=\bar:DDL%%%
  999. \let^^b8=\bar:DLL%%%
  1000. \let^^b9=\bar:UUDDLL%
  1001. \let^^ba=\bar:UUDD%
  1002. \let^^bb=\bar:DDLL%
  1003. \let^^bc=\bar:UULL%
  1004. \let^^bd=\bar:UUL%%%
  1005. \let^^be=\bar:ULL%%%
  1006. \let^^bf=\bar:DL%
  1007. \let^^c0=\bar:UR%
  1008. \let^^c1=\bar:ULR%
  1009. \let^^c2=\bar:DLR%
  1010. \let^^c3=\bar:UDR%
  1011. \let^^c4=\bar:LR%
  1012. \let^^c5=\bar:UDLR%
  1013. \let^^c6=\bar:UDRR%%%
  1014. \let^^c7=\bar:UUDDR%%%
  1015. \let^^c8=\bar:UURR%
  1016. \let^^c9=\bar:DDRR%
  1017. \let^^ca=\bar:UULLRR%
  1018. \let^^cb=\bar:DDLLRR%
  1019. \let^^cc=\bar:UUDDRR%
  1020. \let^^cd=\bar:LLRR%
  1021. \let^^ce=\bar:UUDDLLRR%
  1022. \let^^cf=\bar:ULLRR%%%
  1023. \let^^d0=\bar:UULR%%%
  1024. \let^^d1=\bar:DLLRR%%%
  1025. \let^^d2=\bar:DDLR%%%
  1026. \let^^d3=\bar:UUR%%%
  1027. \let^^d4=\bar:URR%%%
  1028. \let^^d5=\bar:DRR%%%
  1029. \let^^d6=\bar:DDR%%%
  1030. \let^^d7=\bar:UUDDLR%%%
  1031. \let^^d8=\bar:UDLLRR%%%
  1032. \let^^d9=\bar:UL%
  1033. \let^^da=\bar:DR%
  1034. \let^^db=\box:full%
  1035. \let^^dc=\box:halflow%
  1036. \let^^dd=\box:halfleft%%%
  1037. \let^^de=\box:halfright%%%
  1038. \let^^df=\box:halfhigh%
  1039. \let^^e0=\:alpha%%%
  1040. \let^^e1=\:eszet%
  1041. \let^^e2=\:Gamma%%%
  1042. \let^^e3=\:Pi%%%
  1043. \let^^e4=\:Sigma%%%
  1044. \let^^e5=\:sigma%%%
  1045. \let^^e6=\:mu%
  1046. \let^^e7=\:tau%%%
  1047. \let^^e8=\:Phi%%%
  1048. \let^^e9=\:Theta%%%
  1049. \let^^ea=\:Omega%%%
  1050. \let^^eb=\:delta%%%
  1051. \let^^ec=\:infinity%%%
  1052. \let^^ed=\:diameter%%%
  1053. \let^^ee=\:elementof%%%
  1054. \let^^ef=\:cut%%%
  1055. \let^^f0=\:identity%%%
  1056. \let^^f1=\:plusminus%
  1057. \let^^f2=\:ge%%%
  1058. \let^^f3=\:le%%%
  1059. \let^^f4=\:intupper%%%
  1060. \let^^f5=\:intlower%%%
  1061. \let^^f6=\:div%
  1062. \let^^f7=\:approx%%%
  1063. \let^^f8=\:degree%
  1064. \let^^f9=\:bigmiddledot%%%
  1065. \let^^fa=\:middledot%
  1066. \let^^fb=\:root%%%
  1067. \let^^fc=\:supern%%%
  1068. \let^^fd=\:supertwo%
  1069. \let^^fe=\box:small%
  1070. \let^^ff=\:fixblank%
  1071. }%
  1072. %
  1073. \gdef\v::pc{%
  1074. \let^^08=\:invertedbigdot%
  1075. \let^^09=\:circ%
  1076. \let^^0a=\:invertedcirc%
  1077. \let^^0b=\:male%
  1078. \let^^0c=\:female%
  1079. \let^^0d=\:onenote%
  1080. }%
  1081. %
  1082. \gdef\v:test{%
  1083. \v:normalize%
  1084. \v:activate%
  1085. \let^^00=\ctl:at%
  1086. \let^^01=\ctl:a%
  1087. \let^^02=\ctl:b%
  1088. \let^^03=\ctl:c%
  1089. \let^^04=\ctl:d%
  1090. \let^^05=\ctl:e%
  1091. \let^^06=\ctl:f%
  1092. \let^^07=\ctl:g%
  1093. \let^^08=\v:BS%
  1094. \let^^09=\v:HT%
  1095. \let^^0a=\v:LF%
  1096. \let^^0b=\v:VT%
  1097. \let^^0c=\v:FF%
  1098. \let^^0d=\v:CR%
  1099. \let^^0e=\ctl:n%
  1100. \let^^0f=\ctl:o%
  1101. \let^^10=\ctl:p%
  1102. \let^^11=\ctl:q%
  1103. \let^^12=\ctl:r%
  1104. \let^^13=\ctl:s%
  1105. \let^^14=\ctl:t%
  1106. \let^^15=\ctl:u%
  1107. \let^^16=\ctl:v%
  1108. \let^^17=\ctl:w%
  1109. \let^^18=\ctl:x%
  1110. \let^^19=\ctl:y%
  1111. \let^^1a=\ctl:z%
  1112. \let^^1b=\ctl:aa%
  1113. \let^^1c=\ctl:bb%
  1114. \let^^1d=\ctl:cc%
  1115. \let^^1e=\ctl:dd%
  1116. \let^^1f=\ctl:ee%
  1117. \let^^20=\:sp%
  1118. \let^^5f=\:us%
  1119. \let^^60=\:gr%
  1120. \let^^7f=\:Delta%
  1121. \let^^80=\ctlx:at%
  1122. \let^^81=\ctlx:a%
  1123. \let^^82=\ctlx:b%
  1124. \let^^83=\ctlx:c%
  1125. \let^^84=\ctlx:d%
  1126. \let^^85=\ctlx:e%
  1127. \let^^86=\ctlx:f%
  1128. \let^^87=\ctlx:g%
  1129. \let^^88=\ctlx:h%
  1130. \let^^89=\ctlx:i%
  1131. \let^^8a=\ctlx:j%
  1132. \let^^8b=\ctlx:k%
  1133. \let^^8c=\ctlx:l%
  1134. \let^^8d=\ctlx:m%
  1135. \let^^8e=\ctlx:n%
  1136. \let^^8f=\ctlx:o%
  1137. \let^^90=\ctlx:p%
  1138. \let^^91=\ctlx:q%
  1139. \let^^92=\ctlx:r%
  1140. \let^^93=\ctlx:s%
  1141. \let^^94=\ctlx:t%
  1142. \let^^95=\ctlx:u%
  1143. \let^^96=\ctlx:v%
  1144. \let^^97=\ctlx:w%
  1145. \let^^98=\ctlx:x%
  1146. \let^^99=\ctlx:y%
  1147. \let^^9a=\ctlx:z%
  1148. \let^^9b=\ctlx:aa%
  1149. \let^^9c=\ctlx:bb%
  1150. \let^^9d=\ctlx:cc%
  1151. \let^^9e=\ctlx:dd%
  1152. \let^^9f=\ctlx:ee%
  1153. \let^^a0=\:null%
  1154. \let^^a1=\:smile%
  1155. \let^^a2=\:invertedsmile%
  1156. \let^^a3=\:herz%
  1157. \let^^a4=\:karo%
  1158. \let^^a5=\:kreuz%
  1159. \let^^a6=\:pik%
  1160. \let^^a7=\:bigdot%
  1161. \let^^a8=\:invertedbigdot%
  1162. \let^^a9=\:circ%
  1163. \let^^aa=\:invertedcirc%
  1164. \let^^ab=\:male%
  1165. \let^^ac=\:female%
  1166. \let^^ad=\:onenote%
  1167. \let^^ae=\:twonote%
  1168. \let^^af=\:star%
  1169. \let^^b0=\:trirt%
  1170. \let^^b1=\:trilf%
  1171. \let^^b2=\:arrupdn%
  1172. \let^^b3=\:doubleexclamationmark%
  1173. \let^^b4=\:paramark%
  1174. \let^^b5=\:paragraph%
  1175. \let^^b6=\:bigcursor%
  1176. \let^^b7=\:updnbar%
  1177. \let^^b8=\:arrup%
  1178. \let^^b9=\:arrdn%
  1179. \let^^ba=\:arrrt%
  1180. \let^^bb=\:arrlf%
  1181. \let^^bc=\:mirrorednot%
  1182. \let^^bd=\:arrlfrt%
  1183. \let^^be=\:triup%
  1184. \let^^bf=\:tridn%
  1185. \let^^c0=\ctl:at%
  1186. \let^^c1=\ctl:a%
  1187. \let^^c2=\ctl:b%
  1188. \let^^c3=\ctl:c%
  1189. \let^^c4=\ctl:d%
  1190. \let^^c5=\ctl:e%
  1191. \let^^c6=\ctl:f%
  1192. \let^^c7=\ctl:g%
  1193. \let^^c8=\ctl:h%
  1194. \let^^c9=\ctl:i%
  1195. \let^^ca=\ctl:j%
  1196. \let^^cb=\ctl:k%
  1197. \let^^cc=\ctl:l%
  1198. \let^^cd=\ctl:m%
  1199. \let^^ce=\ctl:n%
  1200. \let^^cf=\ctl:o%
  1201. \let^^d0=\ctl:p%
  1202. \let^^d1=\ctl:q%
  1203. \let^^d2=\ctl:r%
  1204. \let^^d3=\ctl:s%
  1205. \let^^d4=\ctl:t%
  1206. \let^^d5=\ctl:u%
  1207. \let^^d6=\ctl:v%
  1208. \let^^d7=\ctl:w%
  1209. \let^^d8=\ctl:x%
  1210. \let^^d9=\ctl:y%
  1211. \let^^da=\ctl:z%
  1212. \let^^db=\ctl:aa%
  1213. \let^^dc=\ctl:bb%
  1214. \let^^dd=\ctl:cc%
  1215. \let^^de=\ctl:dd%
  1216. \let^^df=\ctl:ee%
  1217. \let^^e0=\ctlx:at%
  1218. \let^^e1=\ctlx:a%
  1219. \let^^e2=\ctlx:b%
  1220. \let^^e3=\ctlx:c%
  1221. \let^^e4=\ctlx:d%
  1222. \let^^e5=\ctlx:e%
  1223. \let^^e6=\ctlx:f%
  1224. \let^^e7=\ctlx:g%
  1225. \let^^e8=\ctlx:h%
  1226. \let^^e9=\ctlx:i%
  1227. \let^^ea=\ctlx:j%
  1228. \let^^eb=\ctlx:k%
  1229. \let^^ec=\ctlx:l%
  1230. \let^^ed=\ctlx:m%
  1231. \let^^ee=\ctlx:n%
  1232. \let^^ef=\ctlx:o%
  1233. \let^^f0=\ctlx:p%
  1234. \let^^f1=\ctlx:q%
  1235. \let^^f2=\ctlx:r%
  1236. \let^^f3=\ctlx:s%
  1237. \let^^f4=\ctlx:t%
  1238. \let^^f5=\ctlx:u%
  1239. \let^^f6=\ctlx:v%
  1240. \let^^f7=\ctlx:w%
  1241. \let^^f8=\ctlx:x%
  1242. \let^^f9=\ctlx:y%
  1243. \let^^fa=\ctlx:z%
  1244. \let^^fb=\ctlx:aa%
  1245. \let^^fc=\ctlx:bb%
  1246. \let^^fd=\ctlx:cc%
  1247. \let^^fe=\ctlx:dd%
  1248. \let^^ff=\ctlx:ee%
  1249. }%
  1250. %
  1251. \gdef\v::test{%
  1252. \let^^08=\ctl:h%
  1253. \let^^09=\ctl:i%
  1254. \let^^0a=\ctl:j%
  1255. \let^^0b=\ctl:k%
  1256. \let^^0c=\ctl:l%
  1257. \let^^0d=\ctl:m%
  1258. }%
  1259. %
  1260. \endgroup% all active
  1261.  
  1262. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1263. %                                                                      %
  1264. %  Dritter Teil: Definition der Makros                                 %
  1265. %                                                                      %
  1266. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1267.  
  1268. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1269. %  Hilfsmakros                                                         %
  1270. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1271.  
  1272. \begingroup % active < >
  1273.  
  1274. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1275.  
  1276. % Zuerst alte Bedeutung von < und > sichern
  1277. \let\lt=<
  1278. \let\gt=>
  1279.  
  1280. % Dann < und > aktivieren
  1281. \catcode`\>=\active
  1282. \catcode`\<=\active
  1283.  
  1284. % Dann sicherstellen, da"s es immer eine globale globale Definition
  1285. % gibt, damit nicht w"ahrend der verz"ogerten Ausf"uhrung eines \write
  1286. % eine undefinierte Steuersequenz auftritt
  1287. \ifx<\:undefined\global\let<=\lt\fi
  1288. \ifx>\:undefined\global\let>=\gt\fi
  1289.  
  1290. % Box zum Sammeln der Zeichen einer Zeile
  1291. \newbox\v:box
  1292.  
  1293. % Z"ahler f"ur die Zeilennummern
  1294. \newcount\v:line
  1295.  
  1296. % Speicher f"ur die anf"angliche \everypar-Setzung
  1297. \newtoks\v:toks
  1298.  
  1299. % Der senkrechte Stich am Anfang und Ende einer Zeile bei ...box
  1300. \gdef\v:bar{\up:{-0.6ex}{\vrule height\H: depth0ex}}
  1301.  
  1302. % Anfang oder Wiederaufnahme einer Zeile
  1303. \gdef\v:bol{\leavevmode\setbox\v:box=\hbox\bgroup}
  1304.  
  1305. % Suspendierung oder Ende einer Zeile
  1306. \gdef\v:eol{\leavevmode\egroup\ht\v:box\h:\dp\v:box\d:\box\v:box}
  1307.  
  1308. % Anfang einer Boxzeile
  1309. \gdef\v:boxbol{\leavevmode\v:bar\space\v:bol}
  1310.  
  1311. % Ende einer Boxzeile
  1312. \gdef\v:boxeol{\v:eol\hfill\v:bar}
  1313.  
  1314. % Setzen der Zeilennummer
  1315. \gdef\v:cnt{%
  1316. \global\advance\v:line by1%
  1317. \hbox to3em{\the\v:line\hfil\quad}%
  1318. }
  1319.  
  1320. % Voreinstellen des Zeichensatzes
  1321. \global\let\v:cset\v:iso
  1322. \global\let\v:ctlcset\v::iso
  1323.  
  1324. % Aktion beim Backspacezeichen
  1325. \gdef\v:BS{%
  1326. \leavevmode\egroup% end collecting of current box
  1327. \dimen0\wd\v:box% get width of current box
  1328. \advance\dimen0by-\w:% one space back
  1329. \wd\v:box\dimen0% set box width of current box
  1330. \setbox0=\box\v:box% copy box
  1331. \setbox\v:box=\hbox\bgroup\box0% restart box
  1332. }
  1333.  
  1334. % Aktion beim Tabulatorzeichen
  1335. \gdef\v:HT{%
  1336. \leavevmode\egroup% end collecting of current box
  1337. \dimen0\wd\v:box% get width of current box
  1338. \divide\dimen0by8% integer division by tab distance
  1339. \divide\dimen0by\w:% integer division by character width
  1340. \multiply\dimen0by\w:% integer multiplication by character width
  1341. \advance\dimen0by\w:% advance to next position
  1342. \multiply\dimen0by8% integer multiplication by tab distance
  1343. \wd\v:box\dimen0% set box width of current box
  1344. \box\v:box% type box
  1345. \setbox\v:box=\hbox\bgroup% start next box
  1346. }
  1347.  
  1348. % Aktion bei den Zeichen Linefeed, Verticaltab und Formfeed
  1349. \gdef\v:LF{\v:CR}
  1350. \gdef\v:VT{\v:CR\v:CR}
  1351. \gdef\v:FF{\v:CR\v:CR\v:CR}%%%{\v:eol\par\vskip0ptplus1fil\break}
  1352.  
  1353. % Umschalten auf Verbatim
  1354. \gdef\v:verb{%
  1355. \v:cset%
  1356. \frenchspacing\tt\baselineskip=\H:\parindent=0pt\parskip=0pt%
  1357. \setbox0=\hbox{X}%
  1358. \global\w:=\wd0%
  1359. \global\h:=\ht0%
  1360. \setbox0=\hbox{g}%
  1361. \global\d:=\dp0%
  1362. \global\x:=\w:\global\divide\x: by9%
  1363. \global\z:=\h:\global\advance\z: by\d:%
  1364. \global\y:=\H:\global\divide\y: by9%
  1365. }
  1366.  
  1367. % Umschalten auf Meta-Verbatim
  1368. \gdef\v:meta{%
  1369. \v:metaopts%
  1370. \v:verb%
  1371. \catcode`\\=0% \ wieder einschalten
  1372. \catcode`\{=1% { wieder einschalten
  1373. \catcode`\}=2% } wieder einschalten
  1374. \catcode`\<=\active% < einschalten
  1375. \catcode`\>=\active% > einschalten
  1376. \let<=\v:metasuspend%
  1377. \let>=\v:metaresume%
  1378. \chardef\\=`\\% \\ gibt \ (nur im meta-Modus)
  1379. \chardef\{=`\{% \{ gibt { (nur im meta-Modus)
  1380. \chardef\}=`\}% \} gibt } (nur im meta-Modus)
  1381. \chardef\>=`\>% \> gibt > (nur im meta-Modus)
  1382. \chardef\<=`\<% \< gibt < (nur im meta-Modus)
  1383. % Ersatz f"ur Zeichen, deren Catcode sonst unerreichbar wird,
  1384. % die aber vielleicht gebraucht werden
  1385. \let\dollar=$% math shift
  1386. \def\ddollar{$$}% display math shift
  1387. \let\tab=&% alignment tab
  1388. \let\hash=##% parameter
  1389. %let\sp=^% bereits in PlainTeX als \sp
  1390. %let\sb=_% bereits in PlainTeX als \sb
  1391. \let\um="% active "
  1392. \let\tie=~% active ~
  1393. }
  1394.  
  1395. % Suspendierung von Meta-Verbatim
  1396. \gdef\v:metasuspend{%
  1397. \relax%
  1398. \ifmmode%
  1399. \def\next{\char`\<}%
  1400. \else%
  1401. \def\next{%
  1402. \v:eol%
  1403. \endgroup%
  1404. \bgroup\it%
  1405. \def\v:CR{\par}%
  1406. \catcode`\>=\active%
  1407. \let>=\v:metaresume%
  1408. }%
  1409. \fi%
  1410. \next%
  1411. }
  1412.  
  1413. % Wiederaufnahme von Meta-Verbatim
  1414. \gdef\v:metaresume{%
  1415. \relax%
  1416. \ifmmode%
  1417. \def\next{\char`\>}%
  1418. \else%
  1419. \def\next{%
  1420. \/\egroup%
  1421. \begingroup%
  1422. \v:meta%
  1423. \v:bol%
  1424. }%
  1425. \fi%
  1426. \next%
  1427. }
  1428.  
  1429. % Schalter fⁿr Abstand um Umgebung
  1430. \newif\ifv:abstand
  1431. \global\let\ifv:abstand\ifv:abstand
  1432. \global\let\v:abstandtrue\v:abstandtrue
  1433. \global\let\v:abstandfalse\v:abstandfalse
  1434.  
  1435. % trivlist-Ersatz bei Einf"ugung ohne Abstand zur Umgebung
  1436. \gdef\v:trivlist{%
  1437. \topsep-\parskip% Abstand ist: topsep+parskip+(Absatz?partopsep:0)
  1438. \partopsep\parskip% Also bleibt hier (Absatz?parskip:0) "ubrig
  1439. \trivlist%
  1440. }
  1441. \global\let\endv:trivlist=\endtrivlist
  1442.  
  1443. % Begin einer Verbtext-Umgebung (vgl. LaTeX-verbatim-Umgebung)
  1444. \gdef\v:benv:{%
  1445. \ifv:abstand\begin{trivlist}\else\begin{v:trivlist}\fi%
  1446. \item[]%
  1447. \if@minipage\else\vskip\parskip\fi%
  1448. \leftskip\@totalleftmargin%
  1449. \rightskip\z@%
  1450. \parindent\z@%
  1451. \parfillskip\@flushglue%
  1452. \parskip\z@%
  1453. \@@par%
  1454. \def\par{\@@par\penalty\interlinepenalty}%
  1455. }
  1456.  
  1457. \gdef\v:eenv:{\ifv:abstand\end{trivlist}\else\end{v:trivlist}\fi}
  1458.  
  1459. % Kleinbuchstaben- und Gro"sbuchstaben-Umgebungen
  1460. \gdef\v:benv{\v:abstandfalse\v:benv:}
  1461. \gdef\v:eenv{\v:abstandfalse\v:eenv:}
  1462. \gdef\v:Benv{\v:abstandtrue\v:benv:}
  1463. \gdef\v:Eenv{\v:abstandtrue\v:eenv:}
  1464.  
  1465. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1466.  
  1467. \endgroup% active < >
  1468.  
  1469. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1470. %  Einstellen des Zeichensatzes                                        %
  1471. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1472.  
  1473. \gdef\verbcharset#1{%
  1474. \ifnum#1=437\let\v:cset\v:pc\let\v:ctlcset\v::pc\else%
  1475. \ifnum#1=850\let\v:cset\v:ibm\let\v:ctlcset\v::ibm\else%
  1476. \ifnum#1=88591\let\v:cset\v:iso\let\v:ctlcset\v::iso\else%
  1477. \ifnum#1=4101962\let\v:cset\v:test\let\v:ctlcset\v::test\else%
  1478. \@latexerr{Unknown verbatim character set}\@eha%
  1479. \fi\fi\fi\fi%
  1480. }
  1481.  
  1482. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1483. %  Verbatim-Zeichenfolge-Makro                                         %
  1484. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1485.  
  1486. \gdef\v:chars#1{%
  1487. \def\next:##1#1{##1\endgroup}%
  1488. \next:%
  1489. }
  1490.  
  1491. \gdef\verbchars{%
  1492. \begingroup%
  1493. \v:verb%
  1494. \v:ctlcset%
  1495. \@ifstar{\v:vistrue\v:chars}{\v:visfalse\v:chars}%
  1496. }
  1497.  
  1498. \gdef\v:Chars#1{%
  1499. \def\next:##1#1{##1\endgroup{\tt\ }\ignorespaces}%
  1500. \next:%
  1501. }
  1502.  
  1503. \gdef\Verbchars{%
  1504. \ifhmode\unskip{\tt\ }\fi%
  1505. \begingroup%
  1506. \v:verb%
  1507. \v:ctlcset%
  1508. \@ifstar{\v:vistrue\v:Chars}{\v:visfalse\v:Chars}%
  1509. }
  1510.  
  1511. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1512. %  Verbatim-Scan-Makros                                                %
  1513. %  Ersetzung der verbatim-Umgebung vorbereiten                         %
  1514. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1515.  
  1516. \begingroup
  1517. \catcode`\|=0%
  1518. \catcode`\<=1%
  1519. \catcode`\>=2%
  1520. |catcode`|\=12%
  1521. |catcode`|{=12%
  1522. |catcode`|}=12%
  1523. |catcode`|^^M=13%
  1524. |gdef|v:l:#1^^M#2\end{verblines}<#2|end<verblines>>%
  1525. |gdef|v:ls:#1^^M#2\end{verblines*}<#2|end<verblines*>>%
  1526. |gdef|v:ln:#1^^M#2\end{verblinesnum}<#2|end<verblinesnum>>%
  1527. |gdef|v:lns:#1^^M#2\end{verblinesnum*}<#2|end<verblinesnum*>>%
  1528. |gdef|v:lb:#1^^M#2\end{verblinesbox}<#2|end<verblinesbox>>%
  1529. |gdef|v:lbs:#1^^M#2\end{verblinesbox*}<#2|end<verblinesbox*>>%
  1530. |gdef|v:env:l:#1^^M#2\end{Verblines}<#2|end<Verblines>>%
  1531. |gdef|v:env:ls:#1^^M#2\end{Verblines*}<#2|end<Verblines*>>%
  1532. |gdef|v:env:ln:#1^^M#2\end{Verblinesnum}<#2|end<Verblinesnum>>%
  1533. |gdef|v:env:lns:#1^^M#2\end{Verblinesnum*}<#2|end<Verblinesnum*>>%
  1534. |gdef|v:env:lb:#1^^M#2\end{Verblinesbox}<#2|end<Verblinesbox>>%
  1535. |gdef|v:env:lbs:#1^^M#2\end{Verblinesbox*}<#2|end<Verblinesbox*>>%
  1536. |gdef|v:ignrest#1^^M<>%
  1537. |gdef|v:atim:#1^^M#2\end{verbatim}<#2|end<verbatim>>% verbatim-Ersatz
  1538. |gdef|v:atims:#1^^M#2\end{verbatim*}<#2|end<verbatim*>>% verbatim-Ersatz
  1539. |endgroup
  1540.  
  1541. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1542.  
  1543. \begingroup
  1544. \catcode`\*=11% * Tempor"ar als Buchstabe
  1545.  
  1546. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1547. %  Verbatim-Umgebung ersetzen                                          %
  1548. %  Diese Ersetzung wirkt lokal zur Gruppe                              %
  1549. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1550.  
  1551. \gdef\verbatimreplace{%
  1552. \let\verbatim=\v:atim%
  1553. \let\endverbatim=\endVerblines%
  1554. \let\verbatim*=\v:atims%
  1555. \let\endverbatim*=\endVerblines*%
  1556. \let\verb=\verbchars%
  1557. }
  1558.  
  1559. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1560. %  Verbatim-Makros und -Umgebungen                                     %
  1561. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1562.  
  1563. \gdef\v:inp#1{%
  1564. \ifvmode\vskip\parskip\else\par\fi%
  1565. \begingroup%
  1566. \v:toks=\everypar%
  1567. \everypar{\the\v:toks\everypar{\v:bol}\the\everypar}%
  1568. \def\v:CR{\v:eol\par}%
  1569. \v:verb%
  1570. \input#1%
  1571. \endgroup%
  1572. \v:after%
  1573. }
  1574.  
  1575. \gdef\verbinput{%
  1576. \v:benv%
  1577. \let\v:after=\v:eenv%
  1578. \@ifstar{\v:vistrue\v:inp}{\v:visfalse\v:inp}%
  1579. }
  1580.  
  1581. \gdef\Verbinput{%
  1582. \v:Benv%
  1583. \let\v:after=\v:Eenv%
  1584. \@ifstar{\v:vistrue\v:inp}{\v:visfalse\v:inp}%
  1585. }
  1586.  
  1587. \gdef\v:l{%
  1588. \ifvmode\vskip\parskip\else\par\fi%
  1589. \begingroup%
  1590. \v:toks=\everypar%
  1591. \everypar{\the\v:toks\everypar{\v:bol}\the\everypar}%
  1592. \def\v:CR{\v:eol\par}%
  1593. \v:verb%
  1594. }
  1595.  
  1596. \gdef\verblines{%
  1597. \v:benv%
  1598. \v:visfalse%
  1599. \v:l%
  1600. \v:l:%
  1601. }
  1602.  
  1603. \gdef\verblines*{%
  1604. \v:benv%
  1605. \v:vistrue%
  1606. \v:l%
  1607. \v:ls:%
  1608. }
  1609.  
  1610. \gdef\Verblines{%
  1611. \v:Benv%
  1612. \v:visfalse%
  1613. \v:l%
  1614. \v:env:l:%
  1615. }
  1616.  
  1617. \gdef\Verblines*{%
  1618. \v:Benv%
  1619. \v:vistrue%
  1620. \v:l%
  1621. \v:env:ls:%
  1622. }
  1623.  
  1624. \gdef\v:atim{% verbatim-Ersatz
  1625. \v:Benv%
  1626. \v:visfalse%
  1627. \v:l%
  1628. \v:atim:%
  1629. }
  1630.  
  1631. \gdef\v:atims{% verbatim*-Ersatz
  1632. \v:Benv%
  1633. \v:vistrue%
  1634. \v:l%
  1635. \v:atims:%
  1636. }
  1637.  
  1638. \gdef\endverblines{%
  1639. \par%
  1640. \endgroup%
  1641. \v:eenv%
  1642. }
  1643.  
  1644. \global\let\endverblines*=\endverblines
  1645.  
  1646. \gdef\endVerblines{%
  1647. \par%
  1648. \endgroup%
  1649. \v:Eenv%
  1650. }
  1651.  
  1652. \global\let\endVerblines*=\endVerblines
  1653.  
  1654. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1655.  
  1656. \gdef\v:inpnum#1{%
  1657. \ifvmode\vskip\parskip\else\par\fi%
  1658. \begingroup%
  1659. \v:toks=\everypar%
  1660. \everypar{\the\v:toks\everypar{\v:cnt\v:bol}\the\everypar}%
  1661. \global\v:line=0%
  1662. \def\v:CR{\v:eol\par}%
  1663. \v:verb%
  1664. \input#1%
  1665. \endgroup%
  1666. \v:after%
  1667. }
  1668.  
  1669. \gdef\verbinputnum{%
  1670. \v:benv%
  1671. \let\v:after=\v:eenv%
  1672. \@ifstar{\v:vistrue\v:inpnum}{\v:visfalse\v:inpnum}%
  1673. }
  1674.  
  1675. \gdef\Verbinputnum{%
  1676. \v:Benv%
  1677. \let\v:after=\v:Eenv%
  1678. \@ifstar{\v:vistrue\v:inpnum}{\v:visfalse\v:inpnum}%
  1679. }
  1680.  
  1681. \gdef\v:ln{%
  1682. \ifvmode\vskip\parskip\else\par\fi%
  1683. \begingroup%
  1684. \v:toks=\everypar%
  1685. \everypar{\the\v:toks\everypar{\v:cnt\v:bol}\the\everypar}%
  1686. \global\v:line=0%
  1687. \def\v:CR{\v:eol\par}%
  1688. \v:verb%
  1689. }
  1690.  
  1691. \gdef\verblinesnum{%
  1692. \v:benv%
  1693. \v:visfalse%
  1694. \v:ln%
  1695. \v:ln:%
  1696. }
  1697.  
  1698. \gdef\verblinesnum*{%
  1699. \v:benv%
  1700. \v:vistrue%
  1701. \v:ln%
  1702. \v:lns:%
  1703. }
  1704.  
  1705. \gdef\Verblinesnum{%
  1706. \v:Benv
  1707. \v:visfalse%
  1708. \v:ln%
  1709. \v:env:ln:%
  1710. }
  1711.  
  1712. \gdef\Verblinesnum*{%
  1713. \v:Benv
  1714. \v:vistrue%
  1715. \v:ln%
  1716. \v:env:lns:%
  1717. }
  1718.  
  1719. \global\let\endverblinesnum=\endverblines
  1720. \global\let\endverblinesnum*=\endverblines
  1721. \global\let\endVerblinesnum=\endVerblines
  1722. \global\let\endVerblinesnum*=\endVerblines
  1723.  
  1724. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1725.  
  1726. \gdef\v:inpbox#1{%
  1727. \ifvmode\vskip\parskip\else\par\fi%
  1728. \begingroup%
  1729. \def\v:CR{\v:boxeol\par\v:boxbol}%
  1730. \v:verb%
  1731. \baselineskip0pt%
  1732. \vbox{\hrule width\linewidth}%
  1733. \offinterlineskip%
  1734. \nobreak%
  1735. \v:boxbol%
  1736. \v:boxeol%
  1737. \par%
  1738. \nobreak%
  1739. \v:boxbol%
  1740. \input#1%
  1741. \v:boxeol%
  1742. \par%
  1743. \nobreak%
  1744. \vbox{\hrule width\linewidth}%
  1745. \endgroup%
  1746. \v:after%
  1747. }
  1748.  
  1749. \gdef\verbinputbox{%
  1750. \v:benv%
  1751. \let\v:after=\v:eenv%
  1752. \@ifstar{\v:vistrue\v:inpbox}{\v:visfalse\v:inpbox}%
  1753. }
  1754.  
  1755. \gdef\Verbinputbox{%
  1756. \v:Benv%
  1757. \let\v:after=\v:Eenv%
  1758. \@ifstar{\v:vistrue\v:inpbox}{\v:visfalse\v:inpbox}%
  1759. }
  1760.  
  1761. \gdef\v:lb{%
  1762. \ifvmode\vskip\parskip\else\par\fi%
  1763. \begingroup%
  1764. \def\v:CR{\v:boxeol\par\v:boxbol}%
  1765. \v:verb%
  1766. \baselineskip0pt%
  1767. \vbox{\hrule width\linewidth}%
  1768. \offinterlineskip%
  1769. \nobreak%
  1770. \v:boxbol%
  1771. \v:boxeol%
  1772. \par%
  1773. \nobreak%
  1774. \v:boxbol%
  1775. }
  1776.  
  1777. \gdef\verblinesbox{%
  1778. \v:benv%
  1779. \v:visfalse%
  1780. \v:lb%
  1781. \v:lb:%
  1782. }
  1783.  
  1784. \gdef\verblinesbox*{%
  1785. \v:benv%
  1786. \v:vistrue%
  1787. \v:lb%
  1788. \v:lbs:%
  1789. }
  1790.  
  1791. \gdef\Verblinesbox{%
  1792. \v:Benv%
  1793. \v:visfalse%
  1794. \v:lb%
  1795. \v:env:lb:%
  1796. }
  1797.  
  1798. \gdef\Verblinesbox*{%
  1799. \v:Benv%
  1800. \v:vistrue%
  1801. \v:lb%
  1802. \v:env:lbs:%
  1803. }
  1804.  
  1805. \gdef\v:end:lb{%
  1806. \v:boxeol%
  1807. \par%
  1808. \nobreak%
  1809. \vbox{\hrule width\linewidth}%
  1810. \endgroup%
  1811. }
  1812.  
  1813. \gdef\endverblinesbox{
  1814. \v:end:lb%
  1815. \v:eenv%
  1816. }
  1817.  
  1818. \global\let\endverblinesbox*=\endverblinesbox
  1819.  
  1820. \gdef\endVerblinesbox{%
  1821. \v:end:lb%
  1822. \v:Eenv%
  1823. }
  1824.  
  1825. \global\let\endVerblinesbox*=\endVerblinesbox
  1826.  
  1827. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1828.  
  1829. \gdef\v:m:inp#1{%
  1830. \ifvmode\vskip\parskip\else\par\fi%
  1831. \begingroup%
  1832. \v:toks=\everypar%
  1833. \everypar{\the\v:toks\everypar{\v:bol}\the\everypar}%
  1834. \def\v:metaopts{\def\v:CR{\v:eol\par}}%
  1835. \begingroup%
  1836. \v:meta%
  1837. \input#1%
  1838. \endgroup%
  1839. \endgroup%
  1840. \v:after%
  1841. }
  1842.  
  1843. \gdef\metainput{%
  1844. \v:benv%
  1845. \let\v:after=\v:eenv%
  1846. \@ifstar{\v:vistrue\v:m:inp}{\v:visfalse\v:m:inp}%
  1847. }
  1848.  
  1849. \gdef\Metainput{%
  1850. \v:Benv%
  1851. \let\v:after=\v:Eenv%
  1852. \@ifstar{\v:vistrue\v:m:inp}{\v:visfalse\v:m:inp}%
  1853. }
  1854.  
  1855. \gdef\v:m:l{%
  1856. \ifvmode\vskip\parskip\else\par\fi%
  1857. \begingroup%
  1858. \v:toks=\everypar%
  1859. \everypar{\the\v:toks\everypar{\v:bol}\the\everypar}%
  1860. \def\v:metaopts{\def\v:CR{\v:eol\par}}%
  1861. \begingroup%
  1862. \v:meta%
  1863. }
  1864.  
  1865. \gdef\metalines{%
  1866. \v:benv%
  1867. \v:visfalse%
  1868. \v:m:l%
  1869. \v:ignrest%
  1870. }
  1871.  
  1872. \gdef\metalines*{%
  1873. \v:benv%
  1874. \v:vistrue%
  1875. \v:m:l%
  1876. \v:ignrest%
  1877. }
  1878.  
  1879. \gdef\Metalines{%
  1880. \v:Benv%
  1881. \v:visfalse%
  1882. \v:m:l%
  1883. \v:ignrest%
  1884. }
  1885.  
  1886. \gdef\Metalines*{%
  1887. \v:Benv%
  1888. \v:vistrue%
  1889. \v:m:l%
  1890. \v:ignrest%
  1891. }
  1892.  
  1893. \gdef\endmetalines{%
  1894. \par%
  1895. \endgroup%
  1896. \endgroup%
  1897. \v:eenv%
  1898. }
  1899.  
  1900. \global\let\endmetalines*=\endmetalines
  1901.  
  1902. \gdef\endMetalines{%
  1903. \par%
  1904. \endgroup%
  1905. \endgroup%
  1906. \v:Eenv%
  1907. }
  1908.  
  1909. \global\let\endMetalines*=\endMetalines
  1910.  
  1911. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1912.  
  1913. \gdef\v:m:inpnum#1{%
  1914. \ifvmode\vskip\parskip\else\par\fi%
  1915. \begingroup%
  1916. \v:toks=\everypar%
  1917. \everypar{\the\v:toks\everypar{\v:cnt\v:bol}\the\everypar}%
  1918. \global\v:line=0%
  1919. \def\v:metaopts{\def\v:CR{\v:eol\par}}%
  1920. \begingroup%
  1921. \v:meta%
  1922. \input#1%
  1923. \endgroup%
  1924. \endgroup%
  1925. \v:after%
  1926. }
  1927.  
  1928. \gdef\metainputnum{%
  1929. \v:benv%
  1930. \let\v:after=\v:eenv%
  1931. \@ifstar{\v:vistrue\v:m:inpnum}{\v:visfalse\v:m:inpnum}%
  1932. }
  1933.  
  1934. \gdef\Metainputnum{%
  1935. \v:Benv%
  1936. \let\v:after=\v:Eenv%
  1937. \@ifstar{\v:vistrue\v:m:inpnum}{\v:visfalse\v:m:inpnum}%
  1938. }
  1939.  
  1940. \gdef\v:m:ln{%
  1941. \ifvmode\vskip\parskip\else\par\fi%
  1942. \begingroup%
  1943. \v:toks=\everypar%
  1944. \everypar{\the\v:toks\everypar{\v:cnt\v:bol}\the\everypar}%
  1945. \global\v:line=0%
  1946. \def\v:metaopts{\def\v:CR{\v:eol\par}}%
  1947. \begingroup%
  1948. \v:meta%
  1949. }
  1950.  
  1951. \gdef\metalinesnum{%
  1952. \v:benv%
  1953. \v:visfalse%
  1954. \v:m:ln%
  1955. \v:ignrest%
  1956. }
  1957.  
  1958. \gdef\metalinesnum*{%
  1959. \v:benv%
  1960. \v:vistrue%
  1961. \v:m:ln%
  1962. \v:ignrest%
  1963. }
  1964.  
  1965. \gdef\Metalinesnum{%
  1966. \v:Benv%
  1967. \v:visfalse%
  1968. \v:m:ln%
  1969. \v:ignrest%
  1970. }
  1971.  
  1972. \gdef\Metalinesnum*{%
  1973. \v:Benv%
  1974. \v:vistrue%
  1975. \v:m:ln%
  1976. \v:ignrest%
  1977. }
  1978.  
  1979. \global\let\endmetalinesnum=\endmetalines
  1980. \global\let\endmetalinesnum*=\endmetalines
  1981. \global\let\endMetalinesnum=\endMetalines
  1982. \global\let\endMetalinesnum*=\endMetalines
  1983.  
  1984. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1985.  
  1986. \gdef\v:m:inpbox#1{%
  1987. \ifvmode\vskip\parskip\else\par\fi%
  1988. \begingroup%
  1989. \def\v:metaopts{\def\v:CR{\v:boxeol\par\v:boxbol}}%
  1990. \begingroup%
  1991. \v:meta%
  1992. \baselineskip0pt%
  1993. \vbox{\hrule width\linewidth}%
  1994. \offinterlineskip%
  1995. \nobreak%
  1996. \v:boxbol%
  1997. \v:boxeol%
  1998. \par%
  1999. \v:boxbol%
  2000. \input#1%
  2001. \v:boxeol%
  2002. \par%
  2003. \offinterlineskip%
  2004. \nobreak%
  2005. \vbox{\hrule width\linewidth}%
  2006. \endgroup%
  2007. \endgroup%
  2008. \v:after%
  2009. }
  2010.  
  2011. \gdef\metainputbox{%
  2012. \v:benv%
  2013. \let\v:after=\v:eenv%
  2014. \@ifstar{\v:vistrue\v:m:inpbox}{\v:visfalse\v:m:inpbox}%
  2015. }
  2016.  
  2017. \gdef\Metainputbox{%
  2018. \v:Benv%
  2019. \let\v:after=\v:Eenv%
  2020. \@ifstar{\v:vistrue\v:m:inpbox}{\v:visfalse\v:m:inpbox}%
  2021. }
  2022.  
  2023. \gdef\v:m:lb{%
  2024. \ifvmode\vskip\parskip\else\par\fi%
  2025. \begingroup%
  2026. \def\v:metaopts{\def\v:CR{\v:boxeol\par\v:boxbol}}%
  2027. \begingroup%
  2028. \v:meta%
  2029. \baselineskip0pt%
  2030. \vbox{\hrule width\linewidth}%
  2031. \offinterlineskip%
  2032. \nobreak%
  2033. \v:boxbol%
  2034. \v:boxeol%
  2035. \par%
  2036. \nobreak%
  2037. \v:boxbol%
  2038. }
  2039.  
  2040. \gdef\metalinesbox{%
  2041. \v:benv%
  2042. \v:visfalse%
  2043. \v:m:lb%
  2044. \v:ignrest%
  2045. }
  2046.  
  2047. \gdef\metalinesbox*{%
  2048. \v:benv%
  2049. \v:vistrue%
  2050. \v:m:lb%
  2051. \v:ignrest%
  2052. }
  2053.  
  2054. \gdef\Metalinesbox{%
  2055. \v:Benv%
  2056. \v:visfalse%
  2057. \v:m:lb%
  2058. \v:ignrest%
  2059. }
  2060.  
  2061. \gdef\Metalinesbox*{%
  2062. \v:Benv%
  2063. \v:vistrue%
  2064. \v:m:lb%
  2065. \v:ignrest%
  2066. }
  2067.  
  2068. \gdef\v:end:m:lb{%
  2069. \v:boxeol%
  2070. \par%
  2071. \offinterlineskip%
  2072. \nobreak%
  2073. \vbox{\hrule width\linewidth}%
  2074. \endgroup%
  2075. \endgroup%
  2076. }
  2077.  
  2078. \gdef\endmetalinesbox{%
  2079. \v:end:m:lb%
  2080. \v:eenv%
  2081. }
  2082.  
  2083. \global\let\endmetalinesbox*=\endmetalinesbox
  2084.  
  2085. \gdef\endMetalinesbox{%
  2086. \v:end:m:lb%
  2087. \v:Eenv%
  2088. }
  2089.  
  2090. \global\let\endMetalinesbox*=\endMetalinesbox
  2091.  
  2092. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2093.  
  2094. \endgroup% * als Buchstabe
  2095. \endgroup% local macros, letter :, etc.
  2096.  
  2097. \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2098.             GNU GENERAL PUBLIC LICENSE
  2099.                Version 2, June 1991
  2100.  
  2101.  Copyright (C) 1989, 1991 Free Software Foundation, Inc.
  2102.                           675 Mass Ave, Cambridge, MA 02139, USA
  2103.  Everyone is permitted to copy and distribute verbatim copies
  2104.  of this license document, but changing it is not allowed.
  2105.  
  2106.                 Preamble
  2107.  
  2108.   The licenses for most software are designed to take away your
  2109. freedom to share and change it.  By contrast, the GNU General Public
  2110. License is intended to guarantee your freedom to share and change free
  2111. software--to make sure the software is free for all its users.  This
  2112. General Public License applies to most of the Free Software
  2113. Foundation's software and to any other program whose authors commit to
  2114. using it.  (Some other Free Software Foundation software is covered by
  2115. the GNU Library General Public License instead.)  You can apply it to
  2116. your programs, too.
  2117.  
  2118.   When we speak of free software, we are referring to freedom, not
  2119. price.  Our General Public Licenses are designed to make sure that you
  2120. have the freedom to distribute copies of free software (and charge for
  2121. this service if you wish), that you receive source code or can get it
  2122. if you want it, that you can change the software or use pieces of it
  2123. in new free programs; and that you know you can do these things.
  2124.  
  2125.   To protect your rights, we need to make restrictions that forbid
  2126. anyone to deny you these rights or to ask you to surrender the rights.
  2127. These restrictions translate to certain responsibilities for you if you
  2128. distribute copies of the software, or if you modify it.
  2129.  
  2130.   For example, if you distribute copies of such a program, whether
  2131. gratis or for a fee, you must give the recipients all the rights that
  2132. you have.  You must make sure that they, too, receive or can get the
  2133. source code.  And you must show them these terms so they know their
  2134. rights.
  2135.  
  2136.   We protect your rights with two steps: (1) copyright the software, and
  2137. (2) offer you this license which gives you legal permission to copy,
  2138. distribute and/or modify the software.
  2139.  
  2140.   Also, for each author's protection and ours, we want to make certain
  2141. that everyone understands that there is no warranty for this free
  2142. software.  If the software is modified by someone else and passed on, we
  2143. want its recipients to know that what they have is not the original, so
  2144. that any problems introduced by others will not reflect on the original
  2145. authors' reputations.
  2146.  
  2147.   Finally, any free program is threatened constantly by software
  2148. patents.  We wish to avoid the danger that redistributors of a free
  2149. program will individually obtain patent licenses, in effect making the
  2150. program proprietary.  To prevent this, we have made it clear that any
  2151. patent must be licensed for everyone's free use or not licensed at all.
  2152.  
  2153.   The precise terms and conditions for copying, distribution and
  2154. modification follow.
  2155.  
  2156.             GNU GENERAL PUBLIC LICENSE
  2157.    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  2158.  
  2159.   0. This License applies to any program or other work which contains
  2160. a notice placed by the copyright holder saying it may be distributed
  2161. under the terms of this General Public License.  The "Program", below,
  2162. refers to any such program or work, and a "work based on the Program"
  2163. means either the Program or any derivative work under copyright law:
  2164. that is to say, a work containing the Program or a portion of it,
  2165. either verbatim or with modifications and/or translated into another
  2166. language.  (Hereinafter, translation is included without limitation in
  2167. the term "modification".)  Each licensee is addressed as "you".
  2168.  
  2169. Activities other than copying, distribution and modification are not
  2170. covered by this License; they are outside its scope.  The act of
  2171. running the Program is not restricted, and the output from the Program
  2172. is covered only if its contents constitute a work based on the
  2173. Program (independent of having been made by running the Program).
  2174. Whether that is true depends on what the Program does.
  2175.  
  2176.   1. You may copy and distribute verbatim copies of the Program's
  2177. source code as you receive it, in any medium, provided that you
  2178. conspicuously and appropriately publish on each copy an appropriate
  2179. copyright notice and disclaimer of warranty; keep intact all the
  2180. notices that refer to this License and to the absence of any warranty;
  2181. and give any other recipients of the Program a copy of this License
  2182. along with the Program.
  2183.  
  2184. You may charge a fee for the physical act of transferring a copy, and
  2185. you may at your option offer warranty protection in exchange for a fee.
  2186.  
  2187.   2. You may modify your copy or copies of the Program or any portion
  2188. of it, thus forming a work based on the Program, and copy and
  2189. distribute such modifications or work under the terms of Section 1
  2190. above, provided that you also meet all of these conditions:
  2191.  
  2192.     a) You must cause the modified files to carry prominent notices
  2193.     stating that you changed the files and the date of any change.
  2194.  
  2195.     b) You must cause any work that you distribute or publish, that in
  2196.     whole or in part contains or is derived from the Program or any
  2197.     part thereof, to be licensed as a whole at no charge to all third
  2198.     parties under the terms of this License.
  2199.  
  2200.     c) If the modified program normally reads commands interactively
  2201.     when run, you must cause it, when started running for such
  2202.     interactive use in the most ordinary way, to print or display an
  2203.     announcement including an appropriate copyright notice and a
  2204.     notice that there is no warranty (or else, saying that you provide
  2205.     a warranty) and that users may redistribute the program under
  2206.     these conditions, and telling the user how to view a copy of this
  2207.     License.  (Exception: if the Program itself is interactive but
  2208.     does not normally print such an announcement, your work based on
  2209.     the Program is not required to print an announcement.)
  2210.  
  2211. These requirements apply to the modified work as a whole.  If
  2212. identifiable sections of that work are not derived from the Program,
  2213. and can be reasonably considered independent and separate works in
  2214. themselves, then this License, and its terms, do not apply to those
  2215. sections when you distribute them as separate works.  But when you
  2216. distribute the same sections as part of a whole which is a work based
  2217. on the Program, the distribution of the whole must be on the terms of
  2218. this License, whose permissions for other licensees extend to the
  2219. entire whole, and thus to each and every part regardless of who wrote it.
  2220.  
  2221. Thus, it is not the intent of this section to claim rights or contest
  2222. your rights to work written entirely by you; rather, the intent is to
  2223. exercise the right to control the distribution of derivative or
  2224. collective works based on the Program.
  2225.  
  2226. In addition, mere aggregation of another work not based on the Program
  2227. with the Program (or with a work based on the Program) on a volume of
  2228. a storage or distribution medium does not bring the other work under
  2229. the scope of this License.
  2230.  
  2231.   3. You may copy and distribute the Program (or a work based on it,
  2232. under Section 2) in object code or executable form under the terms of
  2233. Sections 1 and 2 above provided that you also do one of the following:
  2234.  
  2235.     a) Accompany it with the complete corresponding machine-readable
  2236.     source code, which must be distributed under the terms of Sections
  2237.     1 and 2 above on a medium customarily used for software interchange; or,
  2238.  
  2239.     b) Accompany it with a written offer, valid for at least three
  2240.     years, to give any third party, for a charge no more than your
  2241.     cost of physically performing source distribution, a complete
  2242.     machine-readable copy of the corresponding source code, to be
  2243.     distributed under the terms of Sections 1 and 2 above on a medium
  2244.     customarily used for software interchange; or,
  2245.  
  2246.     c) Accompany it with the information you received as to the offer
  2247.     to distribute corresponding source code.  (This alternative is
  2248.     allowed only for noncommercial distribution and only if you
  2249.     received the program in object code or executable form with such
  2250.     an offer, in accord with Subsection b above.)
  2251.  
  2252. The source code for a work means the preferred form of the work for
  2253. making modifications to it.  For an executable work, complete source
  2254. code means all the source code for all modules it contains, plus any
  2255. associated interface definition files, plus the scripts used to
  2256. control compilation and installation of the executable.  However, as a
  2257. special exception, the source code distributed need not include
  2258. anything that is normally distributed (in either source or binary
  2259. form) with the major components (compiler, kernel, and so on) of the
  2260. operating system on which the executable runs, unless that component
  2261. itself accompanies the executable.
  2262.  
  2263. If distribution of executable or object code is made by offering
  2264. access to copy from a designated place, then offering equivalent
  2265. access to copy the source code from the same place counts as
  2266. distribution of the source code, even though third parties are not
  2267. compelled to copy the source along with the object code.
  2268.  
  2269.   4. You may not copy, modify, sublicense, or distribute the Program
  2270. except as expressly provided under this License.  Any attempt
  2271. otherwise to copy, modify, sublicense or distribute the Program is
  2272. void, and will automatically terminate your rights under this License.
  2273. However, parties who have received copies, or rights, from you under
  2274. this License will not have their licenses terminated so long as such
  2275. parties remain in full compliance.
  2276.  
  2277.   5. You are not required to accept this License, since you have not
  2278. signed it.  However, nothing else grants you permission to modify or
  2279. distribute the Program or its derivative works.  These actions are
  2280. prohibited by law if you do not accept this License.  Therefore, by
  2281. modifying or distributing the Program (or any work based on the
  2282. Program), you indicate your acceptance of this License to do so, and
  2283. all its terms and conditions for copying, distributing or modifying
  2284. the Program or works based on it.
  2285.  
  2286.   6. Each time you redistribute the Program (or any work based on the
  2287. Program), the recipient automatically receives a license from the
  2288. original licensor to copy, distribute or modify the Program subject to
  2289. these terms and conditions.  You may not impose any further
  2290. restrictions on the recipients' exercise of the rights granted herein.
  2291. You are not responsible for enforcing compliance by third parties to
  2292. this License.
  2293.  
  2294.   7. If, as a consequence of a court judgment or allegation of patent
  2295. infringement or for any other reason (not limited to patent issues),
  2296. conditions are imposed on you (whether by court order, agreement or
  2297. otherwise) that contradict the conditions of this License, they do not
  2298. excuse you from the conditions of this License.  If you cannot
  2299. distribute so as to satisfy simultaneously your obligations under this
  2300. License and any other pertinent obligations, then as a consequence you
  2301. may not distribute the Program at all.  For example, if a patent
  2302. license would not permit royalty-free redistribution of the Program by
  2303. all those who receive copies directly or indirectly through you, then
  2304. the only way you could satisfy both it and this License would be to
  2305. refrain entirely from distribution of the Program.
  2306.  
  2307. If any portion of this section is held invalid or unenforceable under
  2308. any particular circumstance, the balance of the section is intended to
  2309. apply and the section as a whole is intended to apply in other
  2310. circumstances.
  2311.  
  2312. It is not the purpose of this section to induce you to infringe any
  2313. patents or other property right claims or to contest validity of any
  2314. such claims; this section has the sole purpose of protecting the
  2315. integrity of the free software distribution system, which is
  2316. implemented by public license practices.  Many people have made
  2317. generous contributions to the wide range of software distributed
  2318. through that system in reliance on consistent application of that
  2319. system; it is up to the author/donor to decide if he or she is willing
  2320. to distribute software through any other system and a licensee cannot
  2321. impose that choice.
  2322.  
  2323. This section is intended to make thoroughly clear what is believed to
  2324. be a consequence of the rest of this License.
  2325.  
  2326.   8. If the distribution and/or use of the Program is restricted in
  2327. certain countries either by patents or by copyrighted interfaces, the
  2328. original copyright holder who places the Program under this License
  2329. may add an explicit geographical distribution limitation excluding
  2330. those countries, so that distribution is permitted only in or among
  2331. countries not thus excluded.  In such case, this License incorporates
  2332. the limitation as if written in the body of this License.
  2333.  
  2334.   9. The Free Software Foundation may publish revised and/or new versions
  2335. of the General Public License from time to time.  Such new versions will
  2336. be similar in spirit to the present version, but may differ in detail to
  2337. address new problems or concerns.
  2338.  
  2339. Each version is given a distinguishing version number.  If the Program
  2340. specifies a version number of this License which applies to it and "any
  2341. later version", you have the option of following the terms and conditions
  2342. either of that version or of any later version published by the Free
  2343. Software Foundation.  If the Program does not specify a version number of
  2344. this License, you may choose any version ever published by the Free Software
  2345. Foundation.
  2346.  
  2347.   10. If you wish to incorporate parts of the Program into other free
  2348. programs whose distribution conditions are different, write to the author
  2349. to ask for permission.  For software which is copyrighted by the Free
  2350. Software Foundation, write to the Free Software Foundation; we sometimes
  2351. make exceptions for this.  Our decision will be guided by the two goals
  2352. of preserving the free status of all derivatives of our free software and
  2353. of promoting the sharing and reuse of software generally.
  2354.  
  2355.                 NO WARRANTY
  2356.  
  2357.   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
  2358. FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
  2359. OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
  2360. PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
  2361. OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  2362. MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
  2363. TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
  2364. PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
  2365. REPAIR OR CORRECTION.
  2366.  
  2367.   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  2368. WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
  2369. REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
  2370. INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
  2371. OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
  2372. TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
  2373. YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
  2374. PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
  2375. POSSIBILITY OF SUCH DAMAGES.
  2376.  
  2377.              END OF TERMS AND CONDITIONS
  2378.  
  2379.     Appendix: How to Apply These Terms to Your New Programs
  2380.  
  2381.   If you develop a new program, and you want it to be of the greatest
  2382. possible use to the public, the best way to achieve this is to make it
  2383. free software which everyone can redistribute and change under these terms.
  2384.  
  2385.   To do so, attach the following notices to the program.  It is safest
  2386. to attach them to the start of each source file to most effectively
  2387. convey the exclusion of warranty; and each file should have at least
  2388. the "copyright" line and a pointer to where the full notice is found.
  2389.  
  2390.     <one line to give the program's name and a brief idea of what it does.>
  2391.     Copyright (C) 19yy  <name of author>
  2392.  
  2393.     This program is free software; you can redistribute it and/or modify
  2394.     it under the terms of the GNU General Public License as published by
  2395.     the Free Software Foundation; either version 2 of the License, or
  2396.     (at your option) any later version.
  2397.  
  2398.     This program is distributed in the hope that it will be useful,
  2399.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  2400.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2401.     GNU General Public License for more details.
  2402.  
  2403.     You should have received a copy of the GNU General Public License
  2404.     along with this program; if not, write to the Free Software
  2405.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  2406.  
  2407. Also add information on how to contact you by electronic and paper mail.
  2408.  
  2409. If the program is interactive, make it output a short notice like this
  2410. when it starts in an interactive mode:
  2411.  
  2412.     Gnomovision version 69, Copyright (C) 19yy name of author
  2413.     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
  2414.     This is free software, and you are welcome to redistribute it
  2415.     under certain conditions; type `show c' for details.
  2416.  
  2417. The hypothetical commands `show w' and `show c' should show the appropriate
  2418. parts of the General Public License.  Of course, the commands you use may
  2419. be called something other than `show w' and `show c'; they could even be
  2420. mouse-clicks or menu items--whatever suits your program.
  2421.  
  2422. You should also get your employer (if you work as a programmer) or your
  2423. school, if any, to sign a "copyright disclaimer" for the program, if
  2424. necessary.  Here is a sample; alter the names:
  2425.  
  2426.   Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  2427.   `Gnomovision' (which makes passes at compilers) written by James Hacker.
  2428.  
  2429.   <signature of Ty Coon>, 1 April 1989
  2430.   Ty Coon, President of Vice
  2431.  
  2432. This General Public License does not permit incorporating your program into
  2433. proprietary programs.  If your program is a subroutine library, you may
  2434. consider it more useful to permit linking proprietary applications with the
  2435. library.  If this is what you want to do, use the GNU Library General
  2436. Public License instead of this License.
  2437.